2010-08-26 60 views
3

我有一個類型爲float(10,6)的列的MySQL表。在MySQL中的浮點類型

如果我在列中插入30.064742,那麼存儲在數據庫中的值是30.064741。

爲什麼?

+1

請參閱:http://stackoverflow.com/questions/618535/what-is-the-difference -between-decimal-float-and-double-in-c – cofiem 2010-08-26 13:13:29

+0

使用'DOUBLE'。 – kennytm 2010-08-26 13:14:03

+2

關於[浮點數字]的常見故事(http://stackoverflow.com/questions/713763/strange-results-with-floatingpoint-comparison)? – pascal 2010-08-26 13:14:35

回答

4

浮點數意味着一定程度的不精確性。如果您需要確保保留每個數字,請使用DECIMAL列。

2

這是一個將數字舍入到數據庫中可以存儲的精度的常見問題。花車將輪到兩個冪的倍數。如果你想要更容易思考的東西,你可以使用十進制類型,這個類型可以十進制。

的文檔中更多細節爲numeric types

當這樣的列被分配跟隨在小數點比由指定的規模被允許更多的數字值,該值被轉換成比例。 (精確的行爲是操作系統特定的,但通常效果會截斷到允許的位數。)