【发布时间】:2015-06-16 14:57:06
【问题描述】:
我在 Rails 4 应用程序上遇到了Ruby BigDecimal 的问题。
我在事物模型中有一个“价格”属性,该类是 BigDecimal。每当我创建或更新事物时,我都希望使用严格的两位十进制数字保存“价格”属性(例如“0.00”、“10.00”、“10.10”、“10.01”)。
但默认情况下,如果不需要两位,它只会保存一位十进制数字。这是我插入的内容和当前保存的内容:
"0" => "0.0" (instead of "0.00")
"10" => "10.0" (instead of "10.00")
"10.1" => "10.1" (instead of "10.10")
"10.01" => "10.01" (OK)
我不只是想用两位小数显示“价格”属性(可以使用"%.2f" % price 完成),我想在我的数据库中保存两位小数的“价格”属性。有什么办法吗?
非常感谢您的帮助。
【问题讨论】:
-
我认为您的 DBMS 可能是问题所在,而不是 ruby 或 rails。您使用的是哪个 DBMS? (postgres、mysql、sqlite 等)
-
你在担心the wrong thing。这是一个显示问题,而不是数据库或数据类型。值是正确的:
0.0是0.00和10.0是10.00,它们只是显示方式不同,因此请正确格式化显示。 -
但默认情况下,如果不需要两位,它只会保存一位十进制数你是怎么想出来的?
-
我的 DBMS 是 Postgres。
-
在 Rails 控制台中,当我创建一个价格为“10”的“t”事物对象,然后通过键入“t.price.to_s”显示它时,我得到“ 10.0"。更多示例可以在原帖中找到。
标签: ruby-on-rails ruby bigdecimal