python大整数乘法不计算最高有效数字

时间:2018-05-18 20:36:11

标签: java python biginteger multiplication

我有一个python程序,它应该乘以2个大整数。

问题是我在具有相同输入的BigInteger类的java中获得了不同的结果。

我已经尝试过用于python的DecInt库,但是给出了与使用纯python相同的答案。

以下是我的变数:

d = 372049305848826709205673800090501485720867768816

r = 5452188953055713107393819158892374332916586527736541041226026450382

结果我从d * r进入python:

2028483115341019294875069650745272851135156323450218238187883716036516369477015140871224045070868977706272670887712

结果我使用BigInteger类进入java:

9530687378863294988874153740700860249994095546182028483115341019294875069650745272851135156323450218238187883716036516369477015140871224045070868977706272670887712

这是我的java代码:

BigInteger d = new BigInteger("372049305848826709205673800090501485720867768816");
        BigInteger r = new BigInteger("5452188953055713107393819158892374332916586527736541041226026450382");
        BigInteger tmp1 = d.multiply(r);
        System.out.println(tmp1);

正如您所看到的,在python的结果中有一些最重要的数字。

有没有解决方案?

1 个答案:

答案 0 :(得分:1)

JavaPython都给出了相同的答案:

2028483115341019294875069650745272851135156323450218238187883716036516369477015140871224045070868977706272670887712

问题必须出在您的Java代码中。确保您预先形成乘法correctly并验证您的输入。

另外,检查是否有任何可能在结果之前打印数字的内容。我能想到的最简单的方法是:

System.out.println("the result is: " + int1.multiply(int2));

这会将您感兴趣的输出与已打印的所有内容分开。