金额存储不能用float
一、简介
金额存储不能使用float类型。
public class FloatTest { public static void main(String[] args) { float f1 = 6.6f; float f2 = 1.3f; System.out.println(f1 + f2); } }
以上结果为:7.8999996,直接计算的值为7.9。也就是说,float底层会有二进制偏移量,丢失精度。
二、正确用法
使用decimal来存储。
缺点:
1、占用存储空间。浮点类型在存储同样范围的值时,通常比decimal使用更少的空间。
2、计算效率不高。因为使用decimal时间和空间开销较大,选用int作为数据库存储格式比较合适,可以同时避免浮点存储计算的不精确和decimal的缺点。对于存储数值较大或者保留小数较多的数字,数据库存储结构可以选择bigint。