use*_*799 7 java double rounding
我的程序的一部分需要在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
Ted*_*opp 11
欢迎来到浮点世界,其中0.1不是0.1.问题是许多数字,包括0.1,不能完全用a表示double.所以你并没有真正在x每次循环中添加0.1 .
一种方法是使用整数运算并除以10:
int i = 0;
while (i <= 10) {
double x = i / 10.0;
. . .
i++;
}
Run Code Online (Sandbox Code Playgroud)
另一种方法是创建x一个BigDecimal,您可以指定您想要特定的精度.它基本上是在做上面的循环所做的事情(一个整数加一个刻度),但打包在一个很好的类中,有很多铃声和口哨声.哦,它具有任意精度.
| 归档时间: |
|
| 查看次数: |
17959 次 |
| 最近记录: |