sql中两个整数相除,结果保留两位小数小细节整理
程序员文章站
2022-03-11 22:29:48
...
为了方便说明,直接截取一个sql:
round(if(a.days=0,0,a.cnt/a.days*1.0),2) dayAvgCnt
假设这个days位int类型,结果是31天;beforeCnt也是int的类型,结果是99。那个这个计算结果永远是 3.0 。
round(if(a.days=0,0,a.cnt*1.0/a.days),2) dayAvgCnt
上面的结果是3.19
原因:
(1)第一个sql中两个int类型相除,不管有没有小数位,结果都是只取整数位,然后后面再加上 ‘’ .0 ‘’。
(2)第二个sql中先乘以1.0,此时数据会变成double类型,然后double类型去除以一个整数,结果还是double类型,所以上面的计算结果取的是 3.19