MySQL 浮动四舍五入

MySQL float rounding

我的 table 中有 float(12,2) 类型的列。为什么数字 1399999.05 在插入操作期间四舍五入为 1399999.00?据我所知,如果数字的位数多于在浮点描述中设置的数字,则它会舍入数字。但我的号码肯定只有两位数。 MySQL 版本 - 5.7

此处需要 DOUBLE 数据类型。 FLOAT 只允许大约七位有效的小数位精度。文本字符串 1399999.051399999.00 表示的数字在转换为 IEEE 32-bit FLOAT values.

时彼此无法区分

MySQL 忽略 FLOAT、DOUBLE、INT(以及 TINYINT、SMALLINT、BIGINT)数据类型的精度规范。相反,它使用本机数据类型。 MySQL 遵守 DECIMAL 数据的精度规范。

在您的情况下,您的精度规格是 (12,2)

请考虑阅读以下内容:What Every Computer Scientist Should Know About Floating Point Numbers

并且,如果您需要有关失去精度时可能出现的问题的提示,read this