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才对
精度不夠,
23 ^ 29
是个40位
十進制數,double
只有15位有效數字,根本表達不了末尾的準確數值int
最大值只有10位,這麼賦值早就溢位了double是浮點數,你這個問題最好用BigInteger來解決。