我有:
tv_sales = 601.5
使用此值,我想返回以下字符串:
"The total dollar amount of TVs sold today was 601.50."
这是我的代码:
def two_decimals(number)
puts sprintf('%0.2f', number)
end
puts "The total dollar amount of TVs sold today was #{two_decimals(tv_sales).to_s}."
#=> 601.50
#=> The total dollar amount of TVs sold today was
如何以正确的顺序将返回返回到一行?
答案 0 :(得分:1)
你的方法应该返回值(隐式 - 作为最后一次计算的表达式,或显式地 - 用return
),而不是输出它,所以它可以在你的字符串中插入:
def two_decimals number
sprintf '%0.2f', number
end
答案 1 :(得分:0)
我建议使用以下代码:
def two_decimals(number)
number.round(2)
end
puts "The total dollar amount of TVs sold today was #{two_decimals(tv_sales)}."
您需要返回一个数字,而不是输出方法,以便将其转换为字符串。
答案 2 :(得分:0)
这是您的代码正在做的事情:
def two_decimals(number)
puts sprintf('%0.2f', number) # => nil
end
tv_sales = 601.5
puts "The total dollar amount of TVs sold today was #{two_decimals(tv_sales).to_s}." # => nil
# >> 601.50
# >> The total dollar amount of TVs sold today was .
puts
输出sprintf('%0.2f', number)
的结果,即601.50
,首先显示在输出中。 puts
时,Ruby会返回two_decimals
的结果,从而生成nil
。two_decimals
调用的字符串中,从而生成The total dollar amount of TVs sold today was .
。通过删除第一个puts
:
def two_decimals(number)
sprintf('%0.2f', number) # => "601.50"
end
tv_sales = 601.5
puts "The total dollar amount of TVs sold today was #{two_decimals(tv_sales).to_s}." # => nil
# >> The total dollar amount of TVs sold today was 601.50.
Ruby将601.50
视为sprintf
的返回值并返回它,它将根据需要插入到字符串中。
没有必要在字符串中使用to_s
,当您插入字符串时,它会自动由Ruby提供:
"#{two_decimals(tv_sales).to_s}" # => "601.50"
"#{two_decimals(tv_sales)}" # => "601.50"