在MySQL多年期上面写着中
最大可能值为30,但不应大于M−2。
但是,我尝试了以下代码,但它仍然有效:
create table test (
a float(2,1),
);
insert into test(a) values (1.2);
select * from test;在这种情况下,十进制精度是1,它明显大于M-2=2-2=0。
我的困惑是如何解释男人。
发布于 2017-06-01 09:47:58
MySQL提供的文档
MySQL允许非标准语法:浮点(M,D)或实(M,D)或双精度(M,D)。在这里,(M,D)指的是总存储在M位数以上的值,其中D位数可能在小数点之后。例如,定义为FLOAT(7,4)的列在显示时将类似于-999.9999。MySQL在存储值时执行四舍五入,因此如果将999.00009插入浮点数(7,4)列中,则近似结果为999.0001。
这意味着在您的示例中,float(2,1) MSQL允许小数点之前最多2位,小数点后允许1位,这意味着1.2将被允许。
如果您插入1.26,那么MySQL将在表中插入1.3,它将舍入该值。加上MySQl在其他文档中说明了这一点,
“十进制”%=>my %DataType = 'if ($M < $D) {返回$D + 2;} elsif ($D > 0) {返回$M +2;
希望这能让你明白。请参考链接。
https://stackoverflow.com/questions/44299900
复制相似问题