我在這個程序中遇到了一個問題,我必須計算base^expo的值,並且base是一個實數,而exponent是一個整數。用(95.123)^12
我期待548815620517731830194541.899025343415715973535967221869852721
,但我的程序產生548815620517732160000000.000000
,這是錯誤的。請提出一個更好的方法。Java:處理冪運算
// declare variables and read values
double myBase = scan.nextDouble();
int myExponent = scan.nextInt();
// display result
System.out.printf("%f", Math.pow(myBase, myExponent));
越大的雙打就越不準確。 – kirbyquerby
始終使用'BigDecimal'來獲得更高的精度或準確度! –
我建議你看看「每個計算機科學家應該知道什麼是浮點運算」http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html – ale64bit