四舍五入 Ruby (Rails)

Rounding in Ruby (Rails)

我不知道为什么这么难,我显然使用了错误的方法。但我正在使用 Stripe API(一切正常),我正在尝试将订阅金额四舍五入到小数点后两位。

例如,Stripe 强制我使用美分作为货币单位。因此,如果我有一个 995 美分的订阅,我显然希望它显示为 9.95 美元。但是我使用的方法 (number_with_precision (995 / 100, :precision => 2) 给了我 9.00 而不是 9.95。然后我尝试了 "round" 方法,它也给了我 9.00。

我在 Whosebug 上看到一些四舍五入的帖子,但我似乎找不到任何解决我转换为 dollars/cents 然后四舍五入到小数点后两位的问题的方法。

如有任何帮助,我们将不胜感激。提前感谢您的宝贵时间。

您只需要将正确的数据类型传递给助手即可。

不是给它 Integer 实例(995 / 100 给你整数 9),而是传递一个 Float 实例( 995 / 100.to_f,这给你 Float 9.95):

number_with_precision (995 / 100.to_f, precision: 2) # or 995 / 100.0
#=> 9.95

您可以尝试使用995 / 100.00(Python也有这种行为)。

因为您正在使用 Integer / Integer => Integer。 做一个整数/浮点数 => 浮点数。