奇怪的Java数学结果

Azz*_*zza 7 java math

真的很简单,但也许有人可以解释.我有2行代码:

long millisPerYear = 365*24*60*60*1000;
System.out.println("millis per year = " + millisPerYear);
Run Code Online (Sandbox Code Playgroud)

我预计产量为31 536 000 000,但我得到1 471 228 928.

如果我从公式中删除1000,答案是正确的,但是1000将其推到边缘.

变量格式是Long这样的,它的大小应该是2 64,足够大.我很难过为什么没有准确地存储这些值.

use*_*125 16

您只使用ints 在右侧进行计算.更换365365L在执行计算long.