四舍五入 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。
做一个整数/浮点数 => 浮点数。
我不知道为什么这么难,我显然使用了错误的方法。但我正在使用 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。 做一个整数/浮点数 => 浮点数。