为什么在php上使用此printf((2376995291 - 141 * 16777216) / 65535)
结果174.0724040589。
在Java System.out.println((2376995291L - 141 * 16777216) / 65535)
上
结果65711。
为什么有两个不同的结果,以及如何在Java上获得PHP,我需要在Java上获得 174 。
答案 0 :(得分:4)
System.out.println((2376995291L - 141L * 16777216L) / (double)65535);
141 * 16777216
从技术上讲会溢出,因为它大于2 ^ 31-1。因此,请将它们设为长号以避免溢出,并且如果您也想获得带小数点的结果,则可以键入分母。
答案 1 :(得分:1)
在Java中尝试
System.out.println((2376995291L - 141 * 16777216L) / 65535L);
答案 2 :(得分:0)
您需要将数字强制转换为浮点数,否则Java只会忽略小数点。
System.out.println(((float) (2376995291L - 141L * 16777216L)) / 65535f)
答案 3 :(得分:0)
因为的乘积是长数,需要将其定义为长数
为澄清起见,分为两个步骤。
public static void main(String[] args) {
Long te = (141L * 16777216L);
System.out.println((2376995291L - te) / 65535);
}
答案 4 :(得分:0)
141 * 16777216
对于int而言太大。如果您长时间进行计算的那一部分,您将得到正确的答案。
jshell> (2376995291L - 141 * 16777216L) / 65535
==> 174