【问题标题】:Some BigDecimal fail to calculate with ** operator某些 BigDecimal 无法使用 ** 运算符计算
【发布时间】:2016-06-29 07:55:15
【问题描述】:

当我将** 运算符与负数BigDecimal 和十进制数BigDecimal 一起使用时,会因Zero or negative argument 错误而失败。

我检查了一些类似的值,如下所示:

-2 ** '0.3'.to_d
# => -1.23114441
2 ** '0.3'.to_d
# => 1.23114441
2 ** '0.3'.to_d
# => 1.23114441
-2 ** '0.3'.to_d
# => -1.23114441
2.to_d ** '0.3'.to_d
# => 1.23114441
-2.to_d ** '0.3'.to_d
# => Math::DomainError: Zero or negative argument for log
from (pry):111:in `**'
2.to_d ** 3.to_d
# => 8.0
-2.to_d ** 3.to_d
# => -8.0

为什么会发生此错误,我该如何解决?

【问题讨论】:

    标签: ruby bigdecimal


    【解决方案1】:

    我现在明白我误解了什么。

    我以为-2.0 ** 0.3(-2.0) ** 0.3 相同,但它与-(2.0 ** 0.3) 相同。

    我不知道**- 强。

    【讨论】:

    • 哇,这确实令人惊讶。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-06
    • 2016-08-13
    • 2014-01-30
    • 2015-04-25
    • 1970-01-01
    • 2016-04-13
    • 1970-01-01
    相关资源
    最近更新 更多