首頁  >  問答  >  主體

java - Math.pow(23,29)%91 的结果为什么是错误的?

Math.pow(23,29)%91 的结果为什么是错误的?


public class T1 {

    public static void main(String[] args) {

        double c = Math.pow(23,29)%91.0;

        System.out.println(c);
    }

}

输出:28.0


        int c = (int)Math.pow(23,29)%91;

        System.out.println(c);

输出  36

然而这都不是正确答案

正确取余后的值是4才对

怪我咯怪我咯2743 天前673

全部回覆(2)我來回復

  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:55:16

    精度不夠,23 ^ 29是个40位十進制數,

    • double只有15位有效數字,根本表達不了末尾的準確數值

    • int最大值只有10位,這麼賦值早就溢位了

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-18 10:55:16

    double是浮點數,你這個問題最好用BigInteger來解決。

    回覆
    0
  • 取消回覆