我有一个类似的产品专栏:
character_set_client gdk
character_set_connection gdk
character_set_database gdk
character_set_filesystem binary
character_set_result gdk
character_set_server gdk
character_set_system utf8
并且它保持返回500.0而不是预期的两位小数500.00。然后我尝试通过控制台手动更改产品价格,它只保存1位小数。
t.decimal :price, :precision => 12, :scale => 2
如何获取十进制列以保存并返回两位小数?
答案 0 :(得分:5)
scale
指定在数据库中保留小数点后的位数。保存1.234
将四舍五入为1.23
,500.00
将保存为500.00
。
在Ruby on Rails中,它们将表示为BigDecimal
。 BigDecimal
将不知道数据库中使用的格式。如果其值为500.0
,则其to_s
方法会将其输出为500.0
,因为该值足够准确。
要将值格式化为货币,请使用number_to_currency
辅助方法。
另见Ruby on Rails: best method of handling currency / money和Does Ruby have any number formatting classes?