Java Math问题输出不正确

时间:2011-08-18 00:23:44

标签: java math modulo

(51 ^ 43)科学计算器中的Mod77给出2作为输出,

(int)(Math.pow(51,43)%(double)77)给出12,而不是2。

你能帮忙吗?

3 个答案:

答案 0 :(得分:2)

    final BigInteger base = BigInteger.valueOf(51);
    final BigInteger exponent = BigInteger.valueOf(43);
    final BigInteger modulus = BigInteger.valueOf(77);
    System.out.println(base.modPow(exponent, modulus));

打印2

答案 1 :(得分:1)

double没有足够的精度来保存Math.pow(51,43)的所有数字。因此,当你接受mod 77时,答案很容易出现明显的舍入错误。

我建议使用BigInteger进行任意精度整数运算。

答案 2 :(得分:0)

而不是:

(int)(Math.pow(51,43)%(double)77)

做的:

(int)(Math.pow(51,43))%((double)77)