ruby-on-rails - 比较 bigdecimal 输出

标签 ruby-on-rails ruby bigdecimal

一个 SQL 查询正在输出一个 bigdecimal 输出,我希望它是 144.50 , 实际值为 #<BigDecimal:7fbe367ed118,'0.1445E3',18(18)>

我尝试了以下方法来比较两者:

assert_equal BigDecimal('144.50'), actual_value

但这失败了:

--- expected
+++ actual
@@ -1 +1 @@
-#<BigDecimal:7fbe367ed938,'0.1445E3',18(18)>
+#<BigDecimal:7fbe367ed118,'0.1445E3',18(18)>

看起来失败是因为实际值和预期值是不同的对象。

这是在 Ruby 中比较大十进制对象的正确方法吗?

最佳答案

你的断言是说“这个对象是否等于另一个对象”。您似乎想要比较值。

你可以这样做:

[4] pry(main)> BigDecimal('144.50') == 144.50                                             
=> true

这将使您的测试看起来像:

assert_equal 144.50, actual_value

其中 actual_value 来自数据库。

关于ruby-on-rails - 比较 bigdecimal 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28975951/

相关文章:

ruby-on-rails - 箱/rails :6: warning: already initialized constant APP_PATH

Ruby 异常处理

java - 如何在不四舍五入的情况下截断 BigDecimal

sql-server - 如何插入到 SQL Server 小数列?

ruby-on-rails - 无法安装 recommendify gem - hiredis.h 未找到

ruby-on-rails - 使用 Rails 3 将 HTML 转义为 JSON

mysql - 关系数据库竞争条件

mysql - 当我发送整数时,在带有数据类型字符串的 Rails ActiveRecord 列中搜索速度很慢

ruby-on-rails - 重置 Heroku 上的意外更改

java - 这个BigDecimal计算有没有错误?