關於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