如何从php在Java上获得相同的结果?

时间:2019-06-26 10:58:34

标签: java php

为什么在php上使用此printf((2376995291 - 141 * 16777216) / 65535)

  

结果174.0724040589。

在Java System.out.println((2376995291L - 141 * 16777216) / 65535)

  

结果65711。

为什么有两个不同的结果,以及如何在Java上获得PHP,我需要在Java上获得 174

5 个答案:

答案 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