可能的重复:
如何在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;
}
我需要的输出完全是:
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.799999999999999999999999999
0.899999999999999999999999999
0.99999999999999999999999999
欢迎来到浮点数的世界,这里的 0.1 并不是 0.1。问题是许多数字(包括 0.1)无法用double
。所以你并没有真正添加 0.1x
每次通过循环。
一种方法是使用整数算术并除以 10:
int i = 0;
while (i <= 10) {
double x = i / 10.0;
. . .
i++;
}
另一种方法是使x
a BigDecimal,您可以在其中指定您想要特定的精度。它基本上是做上面的循环所做的事情(一个整数加一个小数位数),但是打包在一个漂亮的类中,有很多花里胡哨的东西。哦,它具有任意精度。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)