JavaでMath.pow()関数を調べていますが、次のコードはそれぞれ以下のように異なる結果を示します。Java:混乱した結果を返すMath.pow
ケース1:
BigDecimal divisor = new BigDecimal(Math.pow(10,9)+7);
BigDecimal dividend = new BigDecimal(1000000000543543509L);
System.out.println(dividend.remainder(divisor)); // 543543558
ケース2:
System.out.println((1000000000543543509L%((int)Math.pow(10,9)+7))+"");
//543543558
ケース3:
System.out.println((1000000000543543509L%(Math.pow(10,9)+7))+""); //5.43543601E8
は、なぜ私はケース1でケース2と3が、同じでは異なる結果を得るのですか2?上記のうちどれが最も正確ですか?
[Javaの能力を計算する]の可能な複製(https://stackoverflow.com/questions/8071363/calculating-powers-in-java) – nullpointer
「long a」と「double b」を実行するとどうなると思いますか'、' a%b'を計算しますか? bは長いものとして扱われているのですか、または2倍として扱われていますか? – matt
@nullpointer問題は、doubleにキャストされる大きなlongのようです。 – matt