我正在从 csv 导入数据,我需要将一些值转换为 BigDecimal,如果无法解析则引发错误。
根据测试,BigDecimal("invalid number") 返回 0 的 BigDecimal。这没问题,但有点乱,除了有效值为 0...
Float("invalid number") 的行为不同并抛出异常...
我目前的解决方案是:
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
关于ruby - 我怎么知道 BigDecimal 是否解析失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2789028/