我正在从csv导入数据,我需要将一些值转换为BigDecimal,如果无法解析则会引发错误.
从测试开始,BigDecimal(“无效数字”)返回一个0的BigDecimal.这没关系,但有点凌乱,除了有效值为0 …
Float(“无效数字”)的行为不同并抛出异常……
我目前的解决方案是:
class String def to_bd begin Float(self) rescue raise "Unable to parse: #{self}" end BigDecimal(self) end end
我完全错过了什么吗?
解决方法
在简单的情况下,您可以使用RegExp
'123.4' =~ /^[+-]{0,1}\d+\.{0,1}\d*$/ => 0