MySQL之decimal类型踩过的坑

相信开发人员都有用到decimal(M,D)来精确存储小数的经历,不知道大家有没有遇到下面这种情况:

想保留两位小数但M不用很大,默认值为0.00,就像:


mysqlfloat和decimal区别(MySQL之decimal类型踩过的坑)(1)


当你输入0后,情况是却是如下:并没有保留2位小数(0.00)


mysqlfloat和decimal区别(MySQL之decimal类型踩过的坑)(2)


而你又想显示为:


mysqlfloat和decimal区别(MySQL之decimal类型踩过的坑)(3)


经过一番搜索和测试后,发现decimal有以下特点:

当 M>=14是,会自动填充0;反之不会自动填充。


mysqlfloat和decimal区别(MySQL之decimal类型踩过的坑)(4)

另一种办法就是:


mysqlfloat和decimal区别(MySQL之decimal类型踩过的坑)(5)


这种方法也会有问题,发现没有(前面也给你填充了)

,