gpt4 book ai didi

ruby - 在 Ruby 中使用 str.to_f 时如何确定数值?

转载 作者:数据小太阳 更新时间:2023-10-29 07:41:55 25 4
gpt4 key购买 nike

我试图找出数字字符串与任意字符串之间的区别:

'0'.to_f
#=> 0.0

'hello'.to_f
#=> 0.0

以上两者都返回一个Float。如果用户输入实际值 '0' 或用户输入值 'hello',我该如何捕捉差异?

我正在尝试创建一个简单的摄氏度到华氏度计算器。如果用户输入 "hello" 程序应该输出 Please type in a number: 但如果用户输入 0 那么程序应该输出正确的华氏度计算。

最佳答案

使用这个:

number = Float( string_to_convert ) rescue nil
if number.nil?
puts "#{string_to_convert} is not a number"
else
# DO the conversion
end

这将使用一组合理的规则将字符串值转换为 float ,支持负数、科学记数法,同时不需要您编写正则表达式来 try catch 在 Ruby 中表达 float 的所有有效方式。

需要 rescue 来捕获转换失败的错误。


针对您的特定目的可能更好的 Ruby 代码(并将 Tamer 的回答的设计与 Stefan 在评论中的反馈相结合):

begin
number = Float( string_to_convert )
rescue ArgumentError
puts "'#{string_to_convert}' is not a number"
else
# Do the conversion, using number variable
end

但是,如果程序流程比输入或破坏然后重复更复杂,我仍然发现单行代码是有用的——当然前提是您稍后引发错误或可以处理缺失值,因为转换为 Float 失败。

关于ruby - 在 Ruby 中使用 str.to_f 时如何确定数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32629097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com