笔者在网上搜了好久,解释都晦涩难懂。最后通过亲手实践加课本知识得出结论如下:
decimal(M,N)
M表示:不包括小数点,不包括符号位,所能存数字的总位数(包括小数部分和整数部分)
N表示:小数部分数字的位数,由此可知整数部分的位数为M-N;
举个例子,
decimal(4,2) 能够表示的数的范围 -99.99到99.99;
decimal(4,1)能表示的范围,还要写吗?如果对自己心中的答案有怀疑,自己去实验吧。
特殊处理,
如果对于decimal(4,2)的列,输入下列值
输入是99.1 , 存储为99.10 自动补全
输入是99.12 , 存储为99.12 正常处理
输入是99.123 ,存储为99,12 (四舍五入处理)
【注】:我实验的mysql版本是5.6以上,其他版本可能是截断处理,即输入99.129 存储为99.12,而不是99.13。
另外,四舍五入是从小数点后第三位开始
如 输入是 99.1249 存储为99.12。 换句话说四舍五入只看小数点后第三位。