Установите точность отображения поплавка в Ruby
Можно ли установить точность отображения поплавка в Ruby?
Что-то вроде:
z = 1/3
z.to_s #=> 0.33333333333333
z.to_s(3) #=> 0.333
z.to_s(5) #=> 0.33333
Или мне нужно переопределить метод to_s
Float
?
Ответы
Ответ 1
z.round(2)
или x.round(3)
- самое простое решение. См. http://www.ruby-doc.org/core-1.9.3/Float.html#method-i-round.
Тем не менее, это будет только гарантировать, что это не более чем много цифр. В случае 1/3 это нормально, но если вы сказали 0.25.round(3)
, вы получите 0.25, а не 0.250.
Ответ 2
Вы можете использовать sprintf:
sprintf( "%0.02f", 123.4564564)
Ответ 3
Обычно я просто делаю преобразование в открытом коде, например:
puts "%5.2f" % [1.0/3.0]
Ruby вызывает Kernel # format для таких выражений, потому что String имеет основной оператор%, определенный на нем. Подумайте об этом как printf для Ruby, если это звонит вам для вас.
Ответ 4
Вы можете использовать puts
z = #{'%.3f' % z}