Rails number_to_currency 删除小数点右边的尾随零

Rails number_to_currency delete trailing zeroes right of decimal

我有一个动态生成的 table 乘以价格 * 数量。部分价格以美分计算。例如

如果一件商品的价格是 0.0375,我可以在我的 table 中显示为

number_to_currency(0.0375,:precision => 4)
=> [=12=].0375

但是我得到的是价格为标准的 2 位小数的数量

number_to_currency(33.95,:precision => 4)
  => .9500

我需要一种方法来 trim 十进制值的尾随零。请记住,输出位于 Model.each 块中,因此我不确定是否可以有条件地修改精度参数。

number_to_currency(33.95,:precision => 2)

由于 number_to_currency returns 是一个字符串,您可以使用 .remove(/0+$/) 删除任何尾随零:

number_to_currency(33.95,:precision => 4).remove(/0+$/)

此方法的默认值为 2。因此您只需要

number_to_currency(33.95)

http://api.rubyonrails.org/classes/ActionView/Helpers/NumberHelper.html#method-i-number_to_currency

尝试指定 strip_insignificant_zeros 选项:

number_to_currency(33.95, precision: 4, strip_insignificant_zeros: true)

它应该删除小数点分隔符后的零。 Here是这个选项的描述。

尝试在 number_to_currency 之前使用 round:

number_to_currency(33.95.round(4)) # .95
number_to_currency(0.0375.round(4)) # [=10=].0375