Ruby圆形数字和paypal税计算

时间:2015-04-24 13:29:04

标签: ruby paypal floating-point decimal currency

我在计算税时会发出四舍五入的数字。

例如,对于金额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),向下舍入(楼层)的正确程序是什么。

关于此主题的任何其他建议?

1 个答案:

答案 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