我遇到一些奇怪的四捨五入問題JSF使用下面的JSF代碼數字加起來不正確:問題F:convertNumbers四捨五入/顯示不正確
<h:outputLabel value="Subtotal"/><h:outputText value="#{shoppingCart.itemsPrice}"><f:convertNumber groupingUsed="true" type="currency" currencySymbol="€"/></h:outputText>
<h:outputLabel value="Shipping"/><h:outputText value="#{shoppingCart.shippingPrice}"><f:convertNumber groupingUsed="true" type="currency" currencySymbol="€"/></h:outputText>
<h:outputLabel value="Vfat"/><h:outputText value="#{shoppingCart.vfat}"><f:convertNumber groupingUsed="true" type="currency" currencySymbol="€"/></h:outputText>
<h:outputLabel value="Total"/><h:outputText value="#{shoppingCart.totalGrossPrice}"><f:convertNumber groupingUsed="true" type="currency" currencySymbol="€"/></h:outputText>
這裏的數字
- 小計49.50€
- 航運€0.00
- VFAT€9.40
- 總€58.91
這些數字不是很正確正弦正弦波在我國的國家是19%,因此VFat實際上是9405,我驗證是計算的值。顯示它應該是9,41,但它只顯示9,40以上。然而,即使是更奇怪的是,加49,50給它右49,50 + 9,405 = 58,91(四捨五入顯示)。所以很明顯,對於一個缺少分數的客戶來說,這會非常令人困惑。顯然,在某些情況下,這是不可避免的,例如, Vfat是?,006,ItemPrice是?, 004然後總結了這個?,01但是這裏甚至沒有這種情況。
任何想法?
嘗試使用BigDecimal與適當的精度。 http://stackoverflow.com/questions/1359817/using-bigdecimal-to-work-with-currencies – Ravi
謝謝拉維。通過BigDecimal,我可以得到一致的結果,即對於vfat以及總價格,0,005都被舍入。而且,當我查看這也是合法的,在我的國家以這種方式進行vfat – Tom