即时通讯使用简单的数据库,我有3列A(bigINT 20),B(bigInt 20)和c(DECIMAL(5,4)),当我触发以下查询时,我得到下面提到的结果:
REPLACE INTO `my_table` SET `A` = 8,`B` = 44,`C` = 14;
Run Code Online (Sandbox Code Playgroud)
我在mysql中得到这些值A = 8,b = 44,c为9.9999!?
关于为什么会发生这种情况的任何想法,我该怎么做才能解决这个问题?
DECIMAL(5,4)
指数量最多有5
个数字,4
小数点后他们.所以14
只需要溢出就可以了DECIMAL(6,4)
.
必须清除14
溢出,因为作为常量精度点十进制,它在内部14.0000
(所以六位数超过五).
因此,如果您尝试将14.0000
(六位数)放入DECIMAL(5,4)
(最多五位数) - > MySQL选择最接近您请求的值的值.因此14.0000
得到"四舍五入" 9.9999
.
要适合14
您的列,您可以将其扩展DECIMAL(6,4)
(通常允许更多数字)或更改为DECIMAL(5,3)
(在小数点之前允许多一位数,但当然会失去一些精度).