Java总是给我巨大的数字错误的结果 [英] Java always give me wrong result with huge numbers

查看:32
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆