Ruby:将美元(String)转换为美分(整数)
如何将美元金额(如"5.32"
或"100"
的字符串转换为美分(如532
或10000
的整数金额?
我有一个解决方案如下:
dollar_amount_string = "5.32" dollar_amount_bigdecimal = BigDecimal.new(dollar_amount_string) cents_amount_bigdecimal = dollar_amount_bigdecimal * BigDecimal.new(100) cents_amount_int = cents_amount_bigdecimal.to_i
但它似乎很不稳定。 我想确定,因为这将是PayPal API的输入。
我也尝试了金钱gem,但它不能把字符串作为输入。
您可以使用String#to_r (“to rational”)来避免舍入错误。
def dollars_to_cents(dollars) (100 * dollars.to_r).to_i end dollars_to_cents("12") #=> 1200 dollars_to_cents("10.25") #=> 1025 dollars_to_cents("-10.25") #=> -1025 dollars_to_cents("-0") #=> 0
d, c = dollar_amount_string.split(".") d.to_i * 100 + c.to_i # => 532