我在计算税时会发出四舍五入的数字。
例如,对于金额2.12
和税费20%
,我计算如下:
# this is on Numeric class
def ceil_money
(self * 100).ceil / 100.0
end
...
amount = "2.12"
((Float(amount.to_f) * Float("20.0"))/100).ceil_money
结果为0.43
。
对于PayPal,我必须同时发送税率和税额,似乎他忽略了我的税额并根据税率计算税额。但我遇到的问题是,在付款确认邮件中,我收到tax_amount为0.42
,似乎他们将其围绕下来。
我想知道计算税收,向上(ceil),向下舍入(楼层)的正确程序是什么。
关于此主题的任何其他建议?
答案 0 :(得分:0)
我会使用Ruby的内置BigDecimal来获得更精确的舍入:
require 'big_decimal'
amount = BigDecimal.new('2.12')
tax_rate = 0.2
(amount * tax_rate).round(2).to_f #=> 0.42
但是,在这种情况下,我认为这是你自己的舍入方法导致问题,因为:
amount = 2.12
tax_rate = 0.2
(amount * tax_rate).round(2) #=> 0.42