特种部队生存模拟手机版
115MB · 2025-10-04
我们直接看问题:
大家可以看到,输出结果并不是精确的0.3,而出现这种现象的根本原因就是:浮点数使用 IEEE 754 标准的二进制表示,IEEE 754标准定义的存储方式使部分十进制数无法获得精确二进制表达,像 0.1 这样的十进制小数在二进制中是无限循环小数(比如0.000110011…)(简单来说就是,由于计算机采用二进制系统,二进制的表示能力不足,许多十进制数无法精确表示为有限小数)。
所以,在Java中计算 0.1 + 0.2
的精确结果需要特殊处理,因为浮点数存在精度问题。
1.使用BigDecimal
正确构造方式:
BigDecimal a = new BigDecimal("0.1");
BigDecimal b = new BigDecimal("0.2");
BigDecimal result = a.add(b); // 精确得0.3
在金融计算领域,必须使用BigDecimal进行精确计算。