(1)使用java,
System.out.print(2.0 - 1.1);
产生结果0.8999999999999999
(2)使用C#,
Console.writeline(2.0 - 1.1)
结果:0.9
谁能解释上面的原因,难道java不如C#智能?最近刚刚从C# 转java,感觉很多东西不太明白,
书上说,这个是二进制编码问题,难道C# 就没有二进制编码问题,谁能更深入的说一下.
谢谢...
------解决思路----------------------
java采用的是二进制系统,所以浮点数运算有时没法得到精确值,还记得十进制的小数位转二进制吧,就是这个道理,就像十进制没法精确表示1/3一样,所以如果运算需要精确值,就用BigInteger或者BigDecimal。
------解决思路----------------------
浮点数本来就不精确,去看下IEEE754标准吧