1、Decimal为专门为财务相关问题设计的数据类型。
与double相比,decimal 类型具有更高的精度和更小的范围,它适合于财务和货币计算。【1】
2、float 和 double 在存储的时候,存在精度损失的问题,但是decimal没有或者很少有【2】
举例一:在mysqlbinlog日志就可以看到这种明细数据 使用DOUBLE 读不到我们设置的长度和小数点
### @10=2999.6900000000000546 /* DOUBLE meta=8 nullable=0 is_null=0 */
举例二:在mysqlbinlog日志就可以看到这种明细数据 使用DECIMAL(12,2) 会是我们在设置数据库时候的小数点和长度
### @10=2999.69 /* DECIMAL(12,2) meta=3074 nullable=0 is_null=0 */
3、实例验证
图示一、
图示二、
分析:按照现在使用DOUBLE 但是在mysqlbinlog中就默认去掉数据库中长度和小数点,结果就导致在mysqlbinlog中我们看到使用DOUBLE 后面的长度和小数点位数都没有了,但是使用DECIMAL就不会导致出现这样的结果
#参考资料
【1】https://baike.baidu.com/item/Decimal/8831799?fr=aladdin
https://www.linuxidc.com/Linux/2013-07/88032.htm
【2】https://blog.csdn.net/abc3224302/article/details/78106508
https://blog.csdn.net/m1654399928/article/details/54729409