这可能看起来很简单,但我没有任何答案。当我写:
System.out.println (100 * 1000 * 10000 * 100000);
System.out.println (100 * 1000 * 10000 * 100000.0);
Run Code Online (Sandbox Code Playgroud)
它返回这些值:
276447232
1.0E14
Run Code Online (Sandbox Code Playgroud)
我知道这与某些数据类型的最大值有关。但我只想明确回答为什么它为两个方程返回这些确切值。如果有人可以向我解释这一点,我将不胜感激。
第一个返回值与 int 数据类型的最大值不匹配,这就是我感到困惑的原因。我假设的第二个返回值是双精度值或浮点值,但我不确定。
我对我的代码有疑问.我知道我的代码中需要更改的内容,但我想了解为什么会发生这种情况,因为我真的想学习基础知识.所以我的代码是:
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.");
}
}
Run Code Online (Sandbox Code Playgroud)
此代码将继续并无限期地打印出数字,它不会停在0.5.但是,如果我更改while条件:
while (true)
Run Code Online (Sandbox Code Playgroud)
至
while (number > 0.5)
Run Code Online (Sandbox Code Playgroud)
然后它工作.
如果有人能解释原因,我会非常高兴.谢谢.