轨道十进制小数位数 => 2 不起作用



我有一个像这样的产品列:

t.decimal :price, :precision => 12, :scale => 2

,它一直返回500.00,而不是预期的两位小数500.00。然后我尝试通过控制台手动更改产品价格,它只能节省1位小数。

>product.price = 500.00
=> 500.0
>product.price
=> #<BigDecimal:7ff479c6ba40,'0.5E3',9(36)>

如何保存并返回小数点后两位?

scale指定在数据库中保留的小数点后的位数。1.234保存为1.23, 500.00保存为500.00

在Ruby on Rails中,它们将表示为BigDecimalBigDecimal将不知道DB中使用的格式。如果它的值是500.0,它的to_s方法将输出为500.0,因为这足够精确。

要将值格式化为货币,请使用number_to_currency helper方法。

请参阅Ruby on Rails:处理货币/金钱的最佳方法和Ruby是否有任何数字格式化类?

最新更新