今天在做一個需求,在將數據庫的數據做減法然后比對的時候發現,12.13-12=0.13 然后和最終的值0.13進行對比的時候居然不相等。這不是坑人嗎
然后我們查看了表當中的這些數值存儲的數據類型。發現所有的數據存儲都是按照varchar的形式進行存儲,導致mysql數據庫在計算數據的減法的時候出現了
偏差導致的。這就是mysql的不嚴謹的地方,對於數據的數據類型沒有嚴格的限制。
最終的解決方式:將數據類型進行轉化,然后進行計算:
類似下面這種將數據的數據類型進行強制數據類型轉化,然后進行計算,這樣就能保證數據的精度不會出現問題,計算的結果也不會出現問題。
cast(b.balance as decimal(11,2))
至此問題得到解決。