Как отформатировать строку с помощью float в Ruby, используя # {variable}?

Я хотел бы форматировать строку, содержащую float-переменные, включая их с фиксированным количеством десятичных знаков, и я хотел бы сделать это с помощью такого синтаксиса форматирования:

amount = Math::PI
puts "Current amount: #{amount}"

и я хотел бы получить Current amount: 3.14.

Я знаю, что могу сделать это с помощью

amount = Math::PI
puts "Current amount %.2f" % [amount]

но я спрашиваю, можно ли это сделать с помощью #{}.

Ответ 1

Используйте round:

"Current amount: #{amount.round(2)}"

Ответ 2

Вы можете использовать "#{'%.2f' % var}":

irb(main):048:0> num = 3.1415
=> 3.1415
irb(main):049:0> "Pi is: #{'%.2f' % num}"
=> "Pi is: 3.14"

Ответ 3

Вы можете сделать это, но я предпочитаю версию 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

Ответ 4

Да, возможно:

puts "Current amount: #{sprintf('%.2f', amount)}"