MySQL 浮动四舍五入
MySQL float rounding
我的 table 中有 float(12,2) 类型的列。为什么数字 1399999.05 在插入操作期间四舍五入为 1399999.00?据我所知,如果数字的位数多于在浮点描述中设置的数字,则它会舍入数字。但我的号码肯定只有两位数。
MySQL 版本 - 5.7
此处需要 DOUBLE
数据类型。 FLOAT
只允许大约七位有效的小数位精度。文本字符串 1399999.05
和 1399999.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。
我的 table 中有 float(12,2) 类型的列。为什么数字 1399999.05 在插入操作期间四舍五入为 1399999.00?据我所知,如果数字的位数多于在浮点描述中设置的数字,则它会舍入数字。但我的号码肯定只有两位数。 MySQL 版本 - 5.7
此处需要 DOUBLE
数据类型。 FLOAT
只允许大约七位有效的小数位精度。文本字符串 1399999.05
和 1399999.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。