【发布时间】:2017-11-01 19:15:01
【问题描述】:
我对我的代码有疑问。我知道我必须在我的代码中更改什么,但我想了解为什么会发生这种情况,因为我真的想学习基础知识。所以我的代码是:
public class chunnimunni {
public static void main(String[] args) {
double number = 2.0;
while (true) {
if (number == 0.5)
break;
number -= 0.1;
System.out.printf("%8.1f", number);
}
System.out.println ("Finished.");
}
}
此代码将继续并无限期地打印出数字,它不会停止在 0.5。但是,如果我将 while 条件更改为:
while (true)
到
while (number > 0.5)
然后就可以了。
如果有人能解释原因,我会很高兴。谢谢。
【问题讨论】:
-
而不是
System.out.printf("%8.1f", number);使用System.out.println(number);,你会看到number持有的更精确的值,比如0.49999999999999933,它不等于0.5,所以if (number == 0.5) break;永远不会发生。更多信息请访问Is floating point math broken?
标签: java while-loop conditional-statements