Java总是给我巨大的数字错误的结果 [英] Java always give me wrong result with huge numbers
本文介绍了Java总是给我巨大的数字错误的结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我写了这行代码:
System.out.println(Math.pow(7, 23) % 143); // 7^23 mod 143
我期望输出为 2
但输出为 93.0
.有人知道我做错了什么吗?
I expected the output to be 2
but the output was 93.0
. Does someone know what I'm doing wrong?
推荐答案
数字溢出"double
,这是 Math.pow()
期望和返回的.使用 BigInteger
代替:
The number "overflows" double
, which is what Math.pow()
expects and returns. Use a BigInteger
instead:
BigInteger.valueOf(7)
.pow(23)
.mod(BigInteger.valueOf(143))
或者在一个步骤中,如@Felk 所建议的:
Or in a single step, as suggested by @Felk:
BigInteger.valueOf(7)
.modPow(BigInteger.valueOf(23), BigInteger.valueOf(143))
这篇关于Java总是给我巨大的数字错误的结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文