金额存储不能用float

发布时间 2023-11-06 11:41:12作者: 木乃伊人

一、简介

        金额存储不能使用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。