2014-05-19 48 views
0

我使用Roo gem从电子表格导入一些值。在sqlite中存储小数

一个单元格的值是9.29

但进口之后它被保存为9.289999999999999

所以我添加导入方法:

product.standard_price = row["standard_price"].to_f.round(2) 

我认为要圆,但没有改变。

我也改变列的精度这样

change_column:产品,:standard_price,:小数,:精密=> 10,:刻度=> 2

但它仍然被存储为9.289999999999999

即使我编辑此条目并放入9.29中,它也会存储所有这些小数。

这是一个谜给我

回答

1

一般最好是价格存储为一个整数。所以你必须乘以100并存储例如929.然后,当你来显示数字时,只需将你从数据库中获得的数字除以100.

或者,您可以将它以文本格式存储。

+0

嗯听起来有点奇怪。如果小数类型甚至不能保持2位小数的良好轨迹,那么它有什么好处呢? – Jepzen

+1

SQLite没有小数类型。 –

+0

有没有一种方法可以在命名表单元素中以十进制格式显示n/100,但是在HTTP请求时有底层整数n是元素的值吗? – Lori