我对此感到非常困惑。我将两个正数相除并得到一个负数结果(我正在使用Java)。
long hour = 92233720368L / (3600 * 1000000 );
结果是-132。
但是,如果我将它们分为两个长整数,则会得到正确的结果:
long hour1 = 92233720368L / (3600000000L );
然后我得到的结果是:25
我想知道为什么会发生...
先感谢您! :)
最佳答案
您必须在L
或3600
的末尾添加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/