ruby - 我怎么知道 BigDecimal 是否解析失败?

标签 ruby bigdecimal

我正在从 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/

相关文章:

ruby-on-rails - Google API Ruby 客户端(gem)错误 `uninitialized constant Google::APIClient::UploadIO`

ruby - 安装 gem 时添加文件

ruby-on-rails - 使用 JRuby 进行 Rack 初始化时出错

scala.math.BigDecimal : 1. 2 和 1.20 相等

mysql - Carrierwave无法保存图像,使用引擎

ruby - 不使用 Rails 将 Ruby 连接到 Mysql

java - 大十进制 while 循环

java - Java 中的精确平方根

java - 使用 BigDecimals 计算百分比

java - 在 Java 中舍入 BigDecimal 不会返回预期的数字