【问题标题】:Ruby 2.4 and BigDecimal error (invalid value)Ruby 2.4 和 BigDecimal 错误(无效值)
【发布时间】:2020-03-20 05:09:39
【问题描述】:

给定一个哈希值,如下所示:

billed_amt:""

然后这段代码:

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

导致此错误:

ArgumentError: invalid value for BigDecimal(): ""

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

【问题讨论】:

  • 您可能希望在传递给BigDecimal 之前将""nil 转换为0。 BigDecimal(tt[:billed_amt].to_i)。或者你可以使用to_d方法tt[:billed_amt].to_s.to_d

标签: ruby-on-rails ruby bigdecimal


【解决方案1】:

这是正确的行为。您可以在“BigDecimal fix for Rails 4 with Ruby 2.4”中了解它。

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

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

【讨论】:

    猜你喜欢
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    • 2011-05-03
    • 2015-11-03
    相关资源
    最近更新 更多