我有一个非常恼人的问题,在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)
我明白浮动精度误差的积累,但是,如何摆脱这个?我尝试使用双打错误的一半,但结果仍然相同.
有任何想法吗?
我的程序的一部分需要在while循环中使用值:
0.1
0.2
0.3
...
0.9
所以我需要在循环中提供它们.这是代码:
double x = 0.0;
while ( x<=1 )
{
// increment x by 0.1 for each iteration
x += 0.1;
}
Run Code Online (Sandbox Code Playgroud)
我需要输出完全正确:
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
但它实际上给了我一些类似的东西:
0.1
0.2
0.300000000000000000000000004
0.4
0.5
0.6
0.79999999999999999999999999
0.89999999999999999999999999
0.99999999999999999999999999