MySQL实数类型使用注意事项

MySQL实数类型使用注意事项

实数类型,即支持存储带小数的数据类型。MySQL数据库中的实数类型,既有支持精确类型的,也有支持不精确类型的,所以,在使用的过程中需要注意一些注意事项。

1.FLOAT和DOUBLE类型使用标准的浮点运算进行近似计算,这里注意是近似计算,所以在一些计算结果中可能会因为精度损失而导致一些意想不到的结果。

2.DECIMAL类型用于存储精确的小数,需要注意的是在MySQL5.0以及更高的版本中才支持精确计算,因为在4.1及更早的版本中,DECIMAL只是一个存储类型,底层是使用浮点运算来实现计算的。

3.在MySQL5.0及更高的版本中,DECIMAL类型允许存储最多65个数字。

4.在存储相同范围的值时,FLOAT和DOUBLE比DECIMAL使用更少的存储空间,FLOAT使用4个字节存储,DOUBLE使用8个字节存储。

5.因为DECIMAL需要额外的空间和计算开销,应尽量在只对小数进行精确计算的时候才使用DECIMAL。在有金额交易的实战过程中,更倾向于使用BIGINT代替DECIMAL,将金额单位扩大相应倍数,如金额单位为元,而在存储的时候扩大100倍,使用分为单位,这样可以避免使用浮点数计算不精确的问题和使用DECIMAL计算代价高的问题。