我的表中有float(12,2)类型的列。 为什么在插入操作中,数字1399999.05被四舍五入到1399999.00? 据我所知,如果数字的计数大于浮点描述中的设置,它就会对数字进行舍入。 但我的号码肯定只有两位数。 MySQL版本-5.7
此处需要double
数据类型。 float
只允许大约七位有效的小数精度。 在32位IEEE浮点的世界中,您的值1399999.05
和1399999.00
彼此相等。 违反直觉,但却是真的。
MySQL忽略FLOAT,DOUBLE,INT(以及TINYINT,SMALLINT,BIGINT)数据类型的精度规范。 而是使用本机数据类型。 MySQL尊重十进制数据的精度规范。
在您的示例中,精度规格为(12,2)
。
请考虑阅读这篇:关于浮点数,每个计算机科学家应该知道的内容。