在後端,我將貨幣值存儲在一個Money類中,該類包裝一個BigDecimal並將舍入設置爲始終爲Half Even。所有基本操作都可以正常工作並按預期行事。但是我需要以2的刻度向用戶顯示這些值,這就是我的四捨五入錯誤。在Java的UI中顯示資金的正確方法是什麼?
例如,我在後端具有這些值:
一個= 109.11432
B = 9015.57069
C = 9124.68501
它們中的每一個被格式化到PT-BR區域設置:
NumberFormat nf = NumberFormat.getInstance();
nf.setCurrency(Currency.getInstance(new Locale("pt","BR")));
nf.setMinimumFractionDigits(2);
nf.setMaximumFractionDigits(2);
String n = nf.format(valor);
return n;
然後,我有
A = 109,11
B = 9.015,57
C = 9.124,69
這是很正常的,在第一。但c應該是a + b。有了真正的價值,這是有保證的,但舍入給我一個0.01的錯誤。
處理這種情況的正確方法是什麼?
我不認爲你應該存儲109.11432,圍繞它,我的意思是當你去商店時,收銀員要求你支付5,90132美元? ;] – 2010-08-04 20:53:53
在我得到這些結果之前,我做了很多操作,大量的乘法,加法,除法,導致我展示的這些值。如果我圍繞每一個操作,最後我的錯誤比1分大得多。我以前做過。 – 2010-08-05 23:18:47