我有一个MySQL表,其列类型为float(10,6)。
如果我在列中插入30.064742,则存储在数据库中的值为30.064741.。
为什么?
答案 0 :(得分:4)
浮点数意味着一定程度的不精确。如果您需要确保保留每个数字,请使用DECIMAL列。
答案 1 :(得分:2)
将数字舍入到可以存储在数据库中的精度是一个普遍的问题。浮点数将四舍五入为2的幂的倍数。如果你想要一些更容易思考的东西,你可以使用十进制类型,它将舍入到十的幂。
numeric types的文档中的更多详细信息:
如果为这样的列分配的小数点后面的位数多于指定比例所允许的值,则该值将转换为该比例。 (精确的行为是特定于操作系统的,但通常效果是截断到允许的位数。)