我正在研究一個計算8位小數點的物品價格的項目。 但有時計算結果不同。使用float和double進行計算,給出不同的結果
我嘗試了一些樣品,但得到不同的計算結果:
public static void main(String[] args) {
double value1 = 0.999939f * 0.987792f;
double value2 = 0.999939 * 0.987792;
double value3 = (double)0.999939f * 0.987792f;
System.out.println("value 1 : "+ value1);
System.out.println("value 2: "+ value2);
System.out.println("value 3 : "+ value3);
}
輸出是:
value 1 : 0.9877317547798157
value 2 : 0.9877317446880001
value 3 : 0.9877317839126931
這三者是不同的結果。
我很困惑。任何人都可以請澄清我在這裏發生了什麼?
謝謝。
我經歷了一些已經回答,但我只想要一些方法,我可以用float和double來計算。否則我不得不改變很多地方。這將是痛苦的。
不要對貨幣金額表示使用雙重或浮動型變量。你會得到許多與四捨五入有關的問題,等等。使用'BigDecimal'類。 –
謝謝@RafaelOsipov。我還有一些疑問。我們能否確定小數點位置?它會影響計算和舍入? java提供了哪些可以幫助你的API? –
@RealSkeptic這個鏈接是關於爲什麼我們不應該使用double或float來表示。它非常有用,下次我不會使用浮動和雙打。但現在我的問題是「我可以做一些浮動和雙打,這不會影響結果」 –