我有这段代码:
while (x < 10.0) {
x += y;
}
如果
x
和y
是浮点数,那么似乎如果把它们相加,循环将无限地继续下去。我不理解为什么没有通过10。看起来不可能不通过十,但我的教科书上确实如此。
这是为什么呢?这是因为浮点数的舍入吗?还是我漏掉了什么?
编辑:x
和y
严格为正数。
您没有告诉我们变量x
或y
的实际初始值,因此我们无法确定。以下是为什么这可能不起作用的示例:
class Main {
public static void main(String[] args) {
float x = 1.0f;
float y = 1e-8f;
float z = x + y;
System.out.printf("%g\n", x); // 1.00000
System.out.printf("%g\n", y); // 1.00000e-08
System.out.printf("%g\n", z); // 1.00000
System.out.printf("%g\n", z - x); // 0.00000
}
}
y = 1e-30f
:-) - Adrian Pronkwhile(x < 10.0f) {
x += y;
}
或者
while(x < (float)10.0) {
x += y;
}
你的 y 值可能为 0 或非常小,从而使循环运行无限或长时间:
假设如果
y = 0;
这个循环将会无限执行
while(x < 10.0) {
x += y;
}
x
和y
的值。它们是什么? - Oliver CharlesworthSystem.out.println(x)
放在循环内部,以跟踪每个循环的增量。 - A-SM