这取决于您使用的数字类型。
如果你使用浮点数,你最终会得到一个小于1 的值(虽然不完全是,如下java程序的输出所示):
class Main {
public static void main(String[] args) {
int i = 0;
double val = 1000;
while (val > 1) {
val -= val/10;
i++;
System.out.println("val = " + val + " in iteration " + i);
}
}
}
输出摘录:
val = 900.0 in iteration 1
val = 810.0 in iteration 2
val = 729.0 in iteration 3
...
val = 1.0611166119964726 in iteration 65
val = 0.9550049507968253 in iteration 66
如果使用整数类型,将不会达到1,因为只要val == 9,它就不会变小,因为除法结果是0。我添加了一个检查来捕获该条件以防止无限循环。
让我们看看:
class Main {
public static void main(String[] args) {
int i = 0;
int val = 1000;
while (val > 1) {
int subtract = val/10;
if (subtract == 0) {
System.out.println("subtracted value is 0 for value " + val + " at iteration " + i);
break;
}
val -= subtract;
i++;
System.out.println("val = " + val + " in iteration " + i);
}
}
}
输出:
val = 900 in iteration 1
val = 810 in iteration 2
...
val = 10 in iteration 49
val = 9 in iteration 50
value 9 repeats at iteration 50