积极的划分,Java的负面结果

Ear*_*ing 0 java overflow division

我真的对此感到困惑.我正在划分两个正数并得到一个负面结果(我正在使用Java).

long hour = 92233720368L / (3600 * 1000000 );
Run Code Online (Sandbox Code Playgroud)

我得到结果-132.

但如果我将它们分成两个长数字,我得到了正确的结果:

long hour1 = 92233720368L / (3600000000L ); 
Run Code Online (Sandbox Code Playgroud)

然后我得到结果:25

我想知道它为什么会发生......

先感谢您!:)

CMP*_*MPS 5

您必须L在结尾添加36001000000:

例:

long hour = 92233720368L / (3600 * 1000000L );
Run Code Online (Sandbox Code Playgroud)

这是什么是hapenning:

System.out.println(3600 * 1000000); // Gives -694967296 because it exceeds the max limit of an integer size. So 92233720368L / -694967296 = -132
Run Code Online (Sandbox Code Playgroud)

这正是你所在部门发生的事情,支配者是一个整数,因为我上面说的原因被认为是负数.因此,为了考虑类型的乘法结果,long您应该在L之后3600或之后添加1000000