ruby - 某些 BigDecimal 无法使用 ** 运算符计算

标签 ruby bigdecimal

当我将 ** 运算符与负数 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/

相关文章:

python - 在 Python 中复制数组/列表的有效方法

ruby-on-rails - 在 Ruby On Rails 中获取属性的总和

java - 如何在java中计算字符串格式的大数模

java - java中大十进制精度零是什么意思

java - 如何将 BigDecimal 乘以 Java 中的整数

ruby-on-rails - 命令 bundle exec rake Assets :precompile错误

ruby - Padrino 项目生成器失败 - 未定义方法 `add_builtin_type'

ruby-on-rails - Rails add_index 算法 : :concurrently still causes database lock up during migration

ruby-on-rails - 阻止重定向到其他帖子页面

Java:为什么在现实世界中我们应该使用 BigDecimal 而不是 Double?