当我将 **
运算符与负数 BigDecimal
和十进制 BigDecimal
一起使用时,零或负数参数
失败> 错误。
我检查了一些类似的值,如下所示:
-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)是一样的
。
我不知道 **
比 -
强。
关于ruby - 某些 BigDecimal 无法使用 ** 运算符计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38093567/