我遇到了java double
數據類型的問題。問題是,在某些情況下,得到的結果是小數點後的數字非常大。在計算器上完成相同的計算,手動幾乎不能在小數點後達到2位數。我遇到了java雙數據類型問題
的代碼如下:
public class Calculater {
public static void main(String[] args) {
// TODO Auto-generated method stub
String quantityInString="700g";
int indexOfg=quantityInString.indexOf("g");
String onlyQuantityInString=quantityInString.substring(0, indexOfg);
int onlyQuantityInInt=Integer.parseInt(onlyQuantityInString);
double perUnitCostOfThisItem=29.00;
double returnFloat=0;
returnFloat=(onlyQuantityInInt/(1000.00))*perUnitCostOfThisItem;
System.out.println("returnFloat="+returnFloat);
}
}
程序輸出是:使用計算器returnFloat=20.299999999999997
答案是20.3
我不知道爲什麼會這樣? 我已經在筆記本上運行的日食中嘗試過它,並且在Android手機 上也顯示相同的結果。
您可能會遇到舍入錯誤。 – brso05 2014-10-09 14:00:53
你的計算器不會比個人電腦或移動電話準確......所以它可能是四捨五入 – 2014-10-09 14:07:40
沒有其實計算器是正確的Java程序有錯誤。 double和float不精確,你應該在我的答案下使用BigDecimal進行精確查找。 – brso05 2014-10-09 14:08:43