本帖最后由 曲佳奇 于 2014-4-26 22:26 编辑
false
由于java的简单类型不能够精确的对浮点数进行运算
不光是java ,其它语言也存在同样的问题。
虽然现在CPU都支持浮点的运算了,但是CPU在处理的时候,也是先把浮点数(float , double)转成整数再转成二进制,然后进行操作,如果有取余,会有不同的取余方式。
再加上运算完成后,再多二进制转成上层的浮点,又会有一些取舍。就造成了呈现出来时的简单明显的错误 。
3.0-0.6的结果为0.39999999999 不等于0.4
想要精确运算的话 可以查下BigDecimal
- import java.math.BigDecimal;
- class Test {
- public static void main(String[] args)
- {
- double a = 3.0;
- double b = 2.6;
- BigDecimal a1 = new BigDecimal(a+"");
- BigDecimal b1 = new BigDecimal(b+"");
- System.out.println(a1.subtract(b1).doubleValue());
- }
- }
复制代码
|