我在 documentation 找到了long 的范围是从 -2^63 到 2^63-1。
当我运行这个循环时,我无法克服 cca 2 000 000 000。
Log.d(TAG, "Long MAX = " + Long.MAX_VALUE);
for (int i = 1; i < 45; i++) {
long result = i * 184528125;
Log.d(TAG, "" + result);
}
输出为“Long MAX = 9223372036854775807”,结果值如下图所示。
codingground.com 上的示例 Java 项目是 here .
我错过了什么?
最佳答案
这一行是错误的:
long result = i * 184528125;
它将两个 32 位 int
值相乘。结果将是 32 位 int
(已溢出),然后将其转换为 64 位 long
。
您想改用 64 位乘法。将两个操作数之一设为 long
。最简单的方法是在常量上使用 L
后缀:
long result = i * 184528125L;
关于java - Java 中 long 原始类型的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28325023/