我正在尝试将此用户输入号码发送给该功能,但我不知道我做错了什么。任何人都可以帮助我吗?
puts "\n Amount with decimals:\n "
STDOUT.flush
numb = gets
puts "\n Multiplier:\n "
STDOUT.flush
mult = gets
stoque(0.01, numb, 0.5, mult, 1)
答案 0 :(得分:2)
如果需要浮点数,则需要将输入转换为它们:
numb = gets.to_f
...
mult = gets.to_f
...
答案 1 :(得分:1)
如果您希望Ruby为无效(即非十进制)输入引发异常,您还可以使用:
numb = Float(gets)
一些例子: 1
gets | gets.to_f | Float(gets)
--------+------------+--------------
'1' | 1.0 | 1.0
'.5' | 0.5 | 0.5
'1.2.3' | 1.2 | ArgumentError
'' | 0.0 | ArgumentError
'foo' | 0.0 | ArgumentError
由于异常,您可能希望将其包装在begin-rescue
块中,例如:
puts 'Amount with decimals:'
begin
numb = Float(gets)
rescue ArgumentError
puts 'Invalid amount'
retry
end
1 请注意,如果使用 return 输入输入,则gets
包含换行符"\n"
。我已将其省略,因为to_f
和Float()
都会忽略尾随换行符。