关于double的问题。
System.out.println(0.32*0.01); 输出的是0.0032
System.out.println(0.33*0.01); 输出的是0.0033000000000000004
为什么加了0。01就会这样呢? double到底是怎么进行运算的? 谢谢
[解决办法]
应该是 二进制和十进制转换的精度偏差 造成的
[解决办法]
在二进制里1/2是0.1,1/4是0.01,3/4是0.11, 但是类似1/5就没法用小数表示了。
也就是说1/5在十进制里能用小数(0.2)表示,在二进制里就是无限(循环/不循环)小数了。
系统就只能用近似值来表示1/5了。
[解决办法]
public class Main { public static void main(String[] args) { double d=2.0; double d2=1.1; System.out.println(d-d2); } }d-d2=0.8999999999999999
[解决办法]