我对此感到非常困惑。我将两个正数相除并得到一个负数结果(我正在使用Java)。

long hour = 92233720368L / (3600 * 1000000 );


结果是-132。

但是,如果我将它们分为两个长整数,则会得到正确的结果:

long hour1 = 92233720368L / (3600000000L );


然后我得到的结果是:25

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

先感谢您! :)

最佳答案

您必须在L3600的末尾添加1000000

例:

long hour = 92233720368L / (3600 * 1000000L );


这是哈顿的事:

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


这就是您的部门中正在发生的事情,控制因素是一个整数,由于上述原因,该控制因素被视为负数。因此,为了考虑类型long的乘法结果,应在L之后或3600之后添加1000000

关于java - Java中的正除法,负结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24269808/

10-17 02:43