开发者

Ruby rounding issues

开发者 https://www.devze.com 2023-04-05 04:09 出处:网络
I have written some code which extracts and invoice from various hashes, arrays, arrays of hashes, etc. In the i开发者_JAVA技巧nvoice, I am to sub-total the items sold, add provincial sales tax (Canad

I have written some code which extracts and invoice from various hashes, arrays, arrays of hashes, etc. In the i开发者_JAVA技巧nvoice, I am to sub-total the items sold, add provincial sales tax (Canadian, and GST to come up with a grand total. Have all of that. I have a small block to deal with the formatting:

def currency amount
 sprintf("$%.2f",amount)
end

which of course puts the amount as a float with a dollar sign. I am having issues with rounding. One of my invoices adds to one penny more than it should. I understand the whole floating point precision thing, that is not my issue. My instructor says that I need to modify the currency block. I have tried multiplying my values by 100, and then dividing by 100 after I use currency:

puts "GST (#{tax(GST*100)}%)   :#{currency(gst_total/100)}"

but that of course formats everything with floating numbers again, and the same issue is there. How can I modify this?


You may need to round your items or tax values before summing them. For example, RoundCents(1.004 * 3) is 3.01, but RoundCents(1.004) * 3 is 3.00.

Or, you may be a victim of banker's rounding.

0

精彩评论

暂无评论...
验证码 换一张
取 消