爲了方便說明,直接截取一個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