Ruby 2.4 和 BigDecimal 错误(无效值)

Ruby 2.4 and BigDecimal error (invalid value)

给定一个这样的散列值:

billed_amt:""

此代码则:

BigDecimal.new(tt[:billed_amt].to_s)

导致此错误:

ArgumentError: invalid value for BigDecimal(): ""

这是正确的行为吗?我试过更新 gem 但没有成功。

这是正确的行为。您可以在“BigDecimal fix for Rails 4 with Ruby 2.4”中阅读相关信息。

Big Decimal 1.3.0 与 Ruby 2.4 一起发布,已更改为向构造函数抛出无效值异常,而不是像在 Ruby 2.3 中那样返回 0。这样做是为了与其他数字类型(Integer、Float、e.t.c.)更加一致。

曾经有过 suggestions to revert this functionality,但很可能不会发生,因为 BigDecimal 需要与其他数字类型保持一致。