MySQL 中的无效浮点数错误

Error for invalid floating-point numbers in MySQL

引用自学习 SQL Alan Beaulieu 的第 3 版: “float(4,2) 列可以很好地处理数字 27.44 和 8.19,但数字 17.8675 将四舍五入为 17.87,并且尝试将数字 178.375 存储在 float(4,2) 列中会产生错误。 “

为什么第一个例子会出现这种近似而不是后者?为什么 178.375 不近似于 178.4?

因为精度和小数位数的区别。 float(4, 2) 有四位精度和小数位 2。小数位是小数位 右边 的数字。所以左边4 - 2 = 2个地方。 (巧的是本例中有左右两个位置。)

值 178. 左边有三个值。没有足够的职位给他们。因此错误。

我应该注意到 float(p, s) 是特定于 MySQL 的,我强烈反对使用它。相反,使用固定长度数字的标准数据类型,称为 numeric/decimal。所以,使用 decimal(4, 2).