Конкатенация строки с числом в ruby


Я полностью начинаю в ruby, поэтому его очень новичок вопрос.

Я пытаюсь объединить строку с плавающим значением, как следует, а затем распечатать его.

puts " Total Revenue of East Cost: " + total_revenue_of_east_cost 

total_revenue_of_east_cost-это переменная с плавающим значением, как я могу заставить ее печатать?

5 60

5 ответов:

Это не совсем объединение, но он будет делать работу, которую вы хотите сделать:

puts " Total Revenue of East Cost: #{total_revenue_of_east_cost}"

технически, это интерполяция. Разница заключается в том, что конкатенация добавляет в конец строки, где по мере интерполяции вычисляет бит кода и вставляет его в строку. В данном случае вставки в строку.

Ruby будет оценивать что-либо между фигурными скобками в строке, где открывающая скобка предшествует octothorpe.

ответ Стивена Дойла, используя метод, известный как" строковая интерполяция", является правильным и, вероятно, самым простым решением, однако есть и другой способ. Вызывая метод objects to_s, этот объект можно преобразовать в строку для печати. Таким образом, следующее также будет работать.

puts " Total Revenue of East Cost: " + total_revenue_of_east_cost.to_s

для вашего примера вам может понадобиться что-то более конкретное, чем метод to_s. В конце концов, to_s на поплавке часто будет включать в себя более или менее точность, чем вы хотите отобразить.

в этом случае

puts " Total Revenue of East Coast: #{sprintf('%.02f', total_revenue_of_east_coast)}"

может быть лучше. #{} может обрабатывать любой бит кода ruby, поэтому вы можете использовать sprintf или любой другой метод форматирования.

Мне нравится (см. строку класса % для деталей):

puts " Total Revenue of East Coast: " + "%.2f" % total_revenue_of_east_coast

пример bucle

(1..100).each do |i| puts "indice #{i} " end