当我使用带负**和十进制BigDecimalBigDecimal运算符时,该操作将失败,并出现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

为什么会发生这个错误,我该如何修复它?

最佳答案

我现在明白我误解了什么。
我以为-2.0 ** 0.3(-2.0) ** 0.3是一样的,但它和-(2.0 ** 0.3)是一样的。
我不知道**-强。

10-06 05:48