[英]Ruby/Rails How to Calculate and Round Prices?
在開發發票時,我遇到了數學四舍五入的問題,我的單價和總額加起來並不完美。 出現此問題是由於業務需求,根據某些條件將隱藏的佣金傳遞給客戶。 我必須在幕后,將每個價格和總計乘以佣金百分比。
例如,未取整的計算價格乘以佣金。
Item Name qty Price2 qty2 Price Total
Kitchen Counter Uba Tuba 100.0 72.4275 100.0 18.125 9055.249999999999 9055.249999999999
Vanity Uba Tuba 100.0 72.4275 100.0 18.125 9055.249999999999 9055.249999999999
Grand Total 18110.5
現在使用rails number_to_currency幫助程序,數字已關閉
Kitchen Counter Uba Tuba 100.0 $72.43 100.0 $18.13 1 $9,055.25 $9,055.25
Vanity Uba Tuba 100.0 $72.43 100.0 $18.13 1 $9,055.25 $9,055.25
由於價格的四舍五入,如果客戶自己進行數學運算,則總數是不正確的。
rounded total = $9056.00
您如何以編程方式解決此問題?
如果要手動執行操作,則應考慮將價格存儲為Integer
數值! x的價格表示x $美分或x數十美分。 這樣,您可以消除數據庫中所有舍入問題。
同樣,使用number_to_currency幫助程序將幫助您正確顯示視圖中的內容。
如果要消除訂單項總計中的舍入誤差,則需要在計算總計之前將折價后的單價舍入到兩位小數,即
qty = 100.0
price = 18.125
qty2 = 100.00
price2 = 72.4275
total = qty * price.round(2) + qty2 * price2.round(2)
total.round(2) # happens in number_to_currency
#=> 9056.0
而不是你現在在做什么
total = qty * price + qty2 * price2
total.round(2) # happens in number_to_currency
#=> 9055.25
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.