我有一个非常恼人的问题,在Java中有很多浮点数或双打数.基本上这个想法是,如果我执行:
for ( float value = 0.0f; value < 1.0f; value += 0.1f )
System.out.println( value );
Run Code Online (Sandbox Code Playgroud)
我得到的是:
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.70000005
0.8000001
0.9000001
Run Code Online (Sandbox Code Playgroud)
我明白浮动精度误差的积累,但是,如何摆脱这个?我尝试使用双打错误的一半,但结果仍然相同.
有任何想法吗?
你如何向仍然认为计算机是无限智能和准确的新鲜程序员和外行人解释浮点不准确?
你有一个最喜欢的例子或轶事似乎比一个精确但干燥的解释更好地理解这个想法吗?
这是如何在计算机科学课程中教授的?
我有一个宽松的线路:
System.out.println(0.0000877979+0.3067846127);
Run Code Online (Sandbox Code Playgroud)
以上行的输出是: 0.30687241060000003
但预期的是: 0.3068724106
我怀疑,0000003最后是怎么来的.