【发布时间】:2017-04-26 20:45:04
【问题描述】:
这可能看起来很简单,但我没有任何答案。 当我写:
System.out.println (100 * 1000 * 10000 * 100000);
System.out.println (100 * 1000 * 10000 * 100000.0);
它返回这些值:
276447232
1.0E14
我知道这与某些数据类型的最大值有关。但我只想明确回答为什么它会为两个方程返回这些精确值。如果有人可以向我解释这一点,我将非常感激。
第一个返回值与 int 数据类型的最大值不匹配,这就是我感到困惑的原因。我假设的第二个返回值是双精度或浮点值,但我不确定。
【问题讨论】:
-
“第一个返回值与 int 数据类型的最大值不匹配,这就是我感到困惑的原因”——它已经溢出了。它没有达到最大值并停留在那里。
-
100000000000000 % (2^32)是 276447232... -
(是的,第二个值是双精度值——不清楚你在哪里混淆了。)
-
@JonSkeet 好的,谢谢。需要明确的是,第二个返回值应该是这样的,不是错误的值吗?
标签: java int multiplication primitive