我有一个BigDecimal数字,它可能有0、1或2个小数位(我正在对其调用round(2)的方法)。 我想以这样的方式在视图中显示它,即仅显示所需的小数位数。 换句话说:
7.0 -> "7"
7.5 -> "7.5"
7.67 -> "7.67"
我该如何实现这个?到目前为止,它显示的是"7.0"而不是"7"。
我有一个BigDecimal数字,它可能有0、1或2个小数位(我正在对其调用round(2)的方法)。 我想以这样的方式在视图中显示它,即仅显示所需的小数位数。 换句话说:
7.0 -> "7"
7.5 -> "7.5"
7.67 -> "7.67"
我该如何实现这个?到目前为止,它显示的是"7.0"而不是"7"。
针对您的需求,可以查看NumberHelper中的方法,特别是number_with_precision
和http://api.rubyonrails.org/classes/ActionView/Helpers/NumberHelper.html#method-i-number_with_precision
具体地说,您需要使用strip_insignificant_zeros选项。
当你拥有极客魔法的sprintf
时,你就不需要Ruby on Rails了:
[7.0, 7.5, 7.57].map{ |f| "%g" % BigDecimal.new(f,3) }
#=> ["7", "7.5", "7.57"]
BigDecimal
的目的,因为sprintf
中的"%g"
会将其转换为浮点数,从而失去精度。 - Trent Scheffert