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