欢迎来到浮点世界,那里的0.1不是0.1。问题在于,许多数字(包括0.1)无法精确表示在中
double。因此,实际上并不是
x每次循环都精确地添加0.1
。
一种方法是使用整数算术除以10:
int i = 0;while (i <= 10) { double x = i / 10.0; . . . i++;}另一种方法是制作
x一个
BigDecimal,您可以在其中指定所需的特定精度。它基本上是在做上面的循环(整数加小数位),但是打包成一个漂亮的类,里面有很多花哨的东西。哦,它具有任意精度。



