Ответ 1
Используйте round
:
"Current amount: #{amount.round(2)}"
Я хотел бы форматировать строку, содержащую float-переменные, включая их с фиксированным количеством десятичных знаков, и я хотел бы сделать это с помощью такого синтаксиса форматирования:
amount = Math::PI
puts "Current amount: #{amount}"
и я хотел бы получить Current amount: 3.14
.
Я знаю, что могу сделать это с помощью
amount = Math::PI
puts "Current amount %.2f" % [amount]
но я спрашиваю, можно ли это сделать с помощью #{}
.
Используйте round
:
"Current amount: #{amount.round(2)}"
Вы можете использовать "#{'%.2f' % var}"
:
irb(main):048:0> num = 3.1415
=> 3.1415
irb(main):049:0> "Pi is: #{'%.2f' % num}"
=> "Pi is: 3.14"
Вы можете сделать это, но я предпочитаю версию String#%
:
puts "Current amount: #{format("%.2f", amount)}"
Как отметил @Bjoernsen, round
- самый простой подход, он также работает со стандартным Ruby (1.9), а не только с Rails:
http://www.ruby-doc.org/core-1.9.3/Float.html#method-i-round
Да, возможно:
puts "Current amount: #{sprintf('%.2f', amount)}"