奇怪的乘法误差

use*_*732 -2 java computer-science

为什么会像这样简单:

System.out.println("test problem: " + 194*194*194*409);
Run Code Online (Sandbox Code Playgroud)

输出这样的东西:

test problem: -1308701240
Run Code Online (Sandbox Code Playgroud)

arc*_*rcy 11

因为你已经溢出了一个整数.请参阅java文档中整数处理的数字限制.


Jon*_*eet 8

我会建议一些步骤,而不是给你直接的答案.

  • 制定出该类型的算术,你正在做什么(是什么类型的字面194?是什么类型你使用的乘法运算的结果呢?)
  • 你期望答案是什么?
  • 您的结果类型可以处理该答案吗?
  • Java为无法处理的结果做了什么?

有关奖励积分,请参阅最后一部分的Java语言规范 ......