Ответ заключается в операторе строкового формата , который позволяет преобразовать число с плавающей точкой в строку с двумя десятичными знаками.Этот метод также будет работать для округления трехзначных чисел, я больше не пробовал, но я уверен, что это сработает.Вот ваш оригинальный код, измененный, чтобы продемонстрировать, как именно он будет работать.
class Item
attr_reader :name, :description, :manufacturer, :price, :summary
def initialize (name, manufacturer, price, description=nil, summary=nil)
@name = name
@manufacturer = manufacturer
@price = "%.2f" % price
@description = description
if description
@summary = "Name: #{name}
Description: #{description}
Manufacturer: #{manufacturer}
Price: $#{@price}"
else
@summary = "Name: #{name}
Manufacturer: #{manufacturer}
Price: $#{@price}"
end
end
def price
@price
end
end
РЕДАКТИРОВАТЬ: Я не видел комментарий @ tadman, пока после публикации этого, он избил меня до ответа.