Как я могу форматировать BigDecimal, чтобы показывать только столько десятичных цифр, сколько необходимо?
У меня есть BigDecimal, который имеет 0, 1 или 2 десятичные цифры (я нахожу его (2) на нем). Я хочу отобразить его в представлении таким образом, что он будет показывать столько десятичных цифр, сколько необходимо. Другими словами:
7.0 -> "7"
7.5 -> "7.5"
7.67 -> "7.67"
Как мне это достичь? Пока что он показывает "7.0" вместо "7".
Ответы
Ответ 1
Для ваших представлений рассмотрите методы из NumberHelper, в частности number_with_precision
, http://api.rubyonrails.org/classes/ActionView/Helpers/NumberHelper.html#method-i-number_with_precision
В частности, вам нужна опция strip_insignificant_zeros.
Ответ 2
Вам не нужно Ruby on Rails, когда у вас есть geeky magic sprintf
:
[7.0, 7.5, 7.57].map{ |f| "%g" % BigDecimal.new(f,3) }
#=> ["7", "7.5", "7.57"]