我认为 long 和 Long class 或多或少是同一件事。 我看到了这个link
当我显示Long.MAX_VALUE
时它显示9223372036854775807
。
但是当我做 1000000*1000000
的乘法时这是 10^12
;它溢出了。
我使用长数据类型来存储值...并且在调试时它具有值 -727379968
相乘后
我在哪里犯了错误或者我完全愚蠢?
更新:这是我的代码,我得到了答案中指定的错误。
for (;;)
ppltn[i] = Integer.parseInt(tk.nextToken());
for (int i = 0; i < noc; i++) //sum is of long type
sum = sum + min * ppltn[i]; //min and ppltn are of integer type
最佳答案
表达式
1000000 * 1000000;
是整数乘法,因为两个操作数都是整数。因此,您受到整数最大值的限制。
你需要进行长乘法
1000000L * 1000000 /* L if you want it*/;
其中至少一个操作数是long
,而另一个则提升为long
(如果还没有)。
关于java - Java中Long对象和基本类型long有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22110964/