某些BigDecimal无法使用**运算符进行计算

时间:2016-06-29 07:55:15

标签: ruby bigdecimal

当我使用**运算符为负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

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

1 个答案:

答案 0 :(得分:4)

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

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

我不知道**强于-