本文共 535 字,大约阅读时间需要 1 分钟。
MySQL有3种实数类型:float(表示单精度浮点数值)、double(表示双精度浮点数值)、decimal(定点型)。MySQL不管是浮点型还是定点型,都可以用类型名+(M, D)进行定制化表示,其中M表示该值的总共长度,D表示小数点后面的长度。比如float(7, 4)类型在插入999.00009时,会进行四舍五入将值保存为999.0001。
注意:对于精度要求比较严格的场景,比如金融场景表示金额的时候,通常需要用decimal进行金额运算,用double和float的话很容易因为精度缺失产生一些奇怪的结果。
之前往一张表中导入多个Excel文件时,发现有条数据抛出异常(ERROR 1264 (22003): Out of range value for column 'xxx' at low 'xxx')导致某个文件导入失败。打开文件一看,该行数据有一列的数据是7位正整数,再查看一下表定义,对应的字段的数据类型为double(10, 4),其意思为:总共10位数字,其中4位小数,6位整数,正是因为整数部分位数超过定义的范围,才抛出了异常。最后,在Excel工具类中直接对该文件的该行进行特殊处理,让遍历到它的时候直接跳过,文件就可以导入了。
参考:
转载地址:http://iynii.baihongyu.com/