加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 01:50:59 所属栏目:百科 来源:网络整理
导读:我试图捕捉数字字符串与任意字符串之间的区别: '0'.to_f#= 0.0'hello'.to_f#= 0.0 以上两者都返回了Float.如果用户输入实际值’0’或者用户输入值’hello’,我如何发现差异? 我正在尝试创建一个简单的Celsius到华氏温度计算器.如果用户输入“hello”,程序
我试图捕捉数字字符串与任意字符串之间的区别:

'0'.to_f
#=> 0.0

'hello'.to_f
#=> 0.0

以上两者都返回了Float.如果用户输入实际值’0’或者用户输入值’hello’,我如何发现差异?

我正在尝试创建一个简单的Celsius到华氏温度计算器.如果用户输入“hello”,程序应输出请键入数字:但如果用户键入0,则程序应输出正确的华氏温度计算.

解决方法

用这个:

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

这将使用一组合理的规则将String值转换为Floats,支持负数,科学记数法,同时不要求您编写正则表达式来尝试捕获在Ruby中表达浮点数的所有有效方法.

需要救援才能从转换失败中捕获错误.

可能更好的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

但是,如果程序流程比输入或破坏然后重复更复杂,我仍然发现单行代码可能很有用 – 前提是您要么稍后提出错误,要么可以处理缺失值,因为转换为浮动失败了.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读