2014-05-19 46 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