我在mysql表中有一个foo
列,其类型为DECIMAL (10,10)
。
如果我尝试在其中插入一条值foo
为100.0的记录,则会产生错误'数据截断:列' foo'超出范围值在第1行
我做错了什么 - 不是10,10
意味着小数点前后都有10位数字,这应该允许这个数字?
答案 0 :(得分:1)
不,第一个值表示总位数,第二个值表示逗号后的数字
所以,
20,10 = 20 Digits and 10 after comma => 10, before and ten after
打包"确切"定点数。 M是总位数(精度),D是小数点后的位数(刻度)。小数点和(对于负数)" - "符号不计入M.如果D为0,则值没有小数点或小数部分,在INSERT上,该值将四舍五入到最接近的DECIMAL。 DECIMAL的最大位数(M)为65.支持的最大小数(D)为30.如果省略D,则默认值为0.如果省略M,则默认值为10.
答案 1 :(得分:0)
如果你想要10位数和10位小数
DECIMAL (20,10)
第一个值定义总数字数...第二个数字定义小数点后的最大数字