关于mysql的数值相减,计算数值不准确的总结。


今天在做一个需求,在将数据库的数据做减法然后比对的时候发现,12.13-12=0.13 然后和最终的值0.13进行对比的时候居然不相等。这不是坑人吗

然后我们查看了表当中的这些数值存储的数据类型。发现所有的数据存储都是按照varchar的形式进行存储,导致mysql数据库在计算数据的减法的时候出现了

偏差导致的。这就是mysql的不严谨的地方,对于数据的数据类型没有严格的限制。

最终的解决方式:将数据类型进行转化,然后进行计算:

类似下面这种将数据的数据类型进行强制数据类型转化,然后进行计算,这样就能保证数据的精度不会出现问题,计算的结果也不会出现问题。
cast(b.balance as decimal(11,2))

至此问题得到解决。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM