2010-08-26 29 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

当这样的列被分配跟随在小数点比由指定的规模被允许更多的数字值,该值被转换成比例。 (精确的行为是操作系统特定的,但通常效果会截断到允许的位数。)