java - Math.pow(23,29)%91 的结果为什么是错误的?
怪我咯
怪我咯 2017-04-18 10:53:16
0
2
668

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才对

怪我咯
怪我咯

走同样的路,发现不同的人生

全員に返信(2)
伊谢尔伦

精度が十分ではありません。23 ^ 2940 桁 の 10 進数です。23 ^ 29是个40位十进制数,

  • double只有15位有效数字,根本表达不了末尾的准确数值

  • int

    • double には有効数字が 15 桁しかなく、末尾の正確な値を表現できません
  • 🎜int最大値は 10 桁のみなので、代入はずっと前にオーバーフローしていました🎜🎜 🎜
いいねを押す +0
洪涛

Double は浮動小数点数です。問題を解決するには BigInteger を使用するのが最善です。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!