mysql中float(2,2)和float()的区别



我在MySQL中创建了一个列类型为float(2,2)的表,并将值10插入其中,但我发现存储的值是0.99。

这背后的原因是什么?如果我们在MySQL中使用float(m, n)类型的列,其中'm'和'n'是整数,那么在该列中存储值时我应该注意什么?

float(2,2)表示"使用两位数字,其中两位在小数点后"。

因此,您可以从-0.99到0.99。您不能在这列中插入10,您需要在逗号前至少插入两位数字(因此float(4,2)或float(2,0))。

MySQL允许非标准语法:FLOAT(M,D)或REAL(M,D)或DOUBLE精度(M, D)。这里,"(M,D)"表示可以用up存储的值共M位,其中D位可以在小数点后点。例如,定义为FLOAT(7,4)的列如下所示-999.9999。MySQL在存储值时执行舍入,因此如果您将999.00009插入FLOAT(7,4)列中,则近似值为结果为999.0001。

MySQL允许非标准语法:FLOAT(M,D)或REAL(M,D)或DOUBLE PRECISION(M,D)。这里的"(M,D)"是指在中可以存储最多M位的值,其中D位可以在小数点之后。

MySql中有FLOAT(M,D)这样的数据类型。其中D是其中M为数字的总数(包括。小数)。浮点数的十进制精度可以达到24位,M的范围是1到65。如果语法为FLOAT(2,2),则只有两位小数,没有实数。如果你想加10你可以使用FLOAT(5,2)

float(M,D)这里要记住M=max。不。允许的位数(范围1到65),D=no。小数点后的数字。你可以把它改成float(5,2)吗?所以float(2,2)不能满足你输入no.10

的需要

虽然上面的答案是正确的,但不建议使用float(2,2),避免使用这种类型的声明是最佳实践。在FLOAT(M,D)中,(M,D)表示值最多可以存储M位,其中D可以在小数点后。数字将被四舍五入两次或截断;这将弊大于利。原因是浮点数被CPU处理为近似值而不是精确值。如果需要(M,D)类型的声明,则应使用DECIMAL(M,D)数据类型。

引自https://dev.mysql.com/doc/refman/8.0/en/floating-point-types.html

从MySQL 8.0.17开始,非标准的FLOAT(M,D)和DOUBLE(M,D)语法已被弃用,您应该期望在MySQL的未来版本中删除对它的支持。

最新更新