我在MySQL中创建了一个表,其类型为float(2,2),并将值10插入其中,但我发现存储的值为0.99。
这背后的原因是什么?如果我们在MySQL中使用float(m,n)类型的列,其中'm'和'n'是整数,那么在此列中存储值时应该注意什么?
答案 0 :(得分:71)
float(2,2)
表示“使用两位数,其中两位在小数点后使用”。
因此,您可以从-0.99到0.99。你不能在这个列中插入10,你需要在逗号之前至少两位数(所以float(4,2)或float(2,0))。
MySQL允许非标准语法:FLOAT(M,D)或REAL(M,D)或DOUBLE PRECISION(M,d)。这里,“(M,D)”表示可以与值一起存储 总共有M位数,其中D位数可能在小数点后面 点。例如,定义为FLOAT(7,4)的列将如下所示 显示时为-999.9999。 MySQL在存储值时执行舍入,因此如果将999.00009插入FLOAT(7,4)列,则为近似值 结果是999.0001。
答案 1 :(得分:14)
MySQL允许非标准语法:FLOAT(M,D)或REAL(M,D)或DOUBLE PRECISION(M,D)。这里,“(M,D)”表示可以存储最多 M位数的值,其中 D位可能位于小数点后。
答案 2 :(得分:3)
浮动(M,D)这里记住M = max。没有。允许的数字(范围1到65),D =否。小数点后的数字。 所以你可以改变浮动(5,2)。所以float(2,2)不满足你输入no.10的需要
答案 3 :(得分:1)
在MySql中,有FLOAT(M,D)之类的数据类型。其中D是 小数位数,M是总位数(包括 浮点数的小数精度可以达到24位,M范围为1到65。 如果语法为FLOAT(2,2),则小数点后两位,实数无位。因此,您想加10就可以像FLOAT(5,2)一样使用。