浮点数出现精度丢失问题应该是所有计算机语言都存在的问题,MySQL也有这种问题,比如直接用sum函数对浮点数求和统计数据时你会发现得到一个带有13位小数的结果。
![](https://www.xubingtao.cn/media/pic/posts/4012/20220628-165845.jpg)
解决办法很简单,只需要用cast将其转化成decimal再求和即可,因为decimal类型的数据是可以确定精度的。
![](https://www.xubingtao.cn/media/pic/posts/4012/20220628-165909.jpg)
select sum(amount) from xxx; -> 674.3999999999999
select sum(cast(amount as decimal(18, 2))) from xxx; -> 674.40
历史上的今天:
展开阅读全文