相关疑难解决方法(0)

如何避免Java中的浮点数或双精度浮点精度错误?

我有一个非常恼人的问题,在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)

我明白浮动精度误差的积累,但是,如何摆脱这个?我尝试使用双打错误的一半,但结果仍然相同.

有任何想法吗?

java sum floating-accuracy

30
推荐指数
3
解决办法
5万
查看次数

Java中的双增量

可能重复:
如何在Java中以0.1f的增量在0.1f和1.0f之间进行迭代?

我的程序的一部分需要在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

java double rounding

7
推荐指数
1
解决办法
2万
查看次数

标签 统计

java ×2

double ×1

floating-accuracy ×1

rounding ×1

sum ×1