java 中 float和double类型的加减,会产生错误,怎么办,怎么样解决这个问题?

Float f1 = 4099.9584544F;
Float f2 = 969.01F;
Float f3 = 398.32F;
System.out.println("F1-F2-F3 浮点型: " +(f1-f2-f3));

浮点运算会产生误差是必然的,因为有些十进制的小数是无法转换成有限位的二进制的,所以就会截取掉后面的无穷二进制位
使用BigDecimal类
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-08-25
应该声明 float类型数据,而不是Float,后面这种是数据包装类;你的这种声明方式是错误的,即使用数据包装类,也是Float f1 = new Float(4099.9584544F);
也就是说只要把Float 改为float就行了
第2个回答  2011-08-26
哥们,不会产生错误的,我试过了,完全正确,你看看你的运行环境对不对,得把编译环境设置成5以上