在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 但是,如果程序流程比输入或破坏然后重复更复杂,我仍然发现单行代码可能很有用 – 前提是您要么稍后提出错误,要么可以处理缺失值,因为转换为浮动失败了. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |