MySQL 浮點比較問題
您在MySQL 中遇到浮點比較問題,因為浮點數本質上是不準確的,因為它們以二進位表示的方式。在比較應該相等的值時,這可能會導致意外結果。
請考慮以下範例:
SELECT COUNT(*) FROM `users` WHERE `points` > "12.75"
您會預期此查詢會回傳 2,因為有兩行包含點大於12.75。然而,它返回 3,因為浮點數以有限的位數表示,這會導致舍入錯誤。
專家建議在金融計算和其他應用程式中使用 DECIMAL 資料類型,而不是 FLOAT 或 DOUBLE精確度至關重要。 DECIMAL 將數值儲存為定點數,消除了浮點數可能出現的捨入錯誤。
為了說明這一點,讓我們將點列從 FLOAT 轉換為 DECIMAL:
ALTER TABLE `users` MODIFY COLUMN `points` DECIMAL(6,2)
現在,當您再次執行查詢時,您將得到預期結果 2。
以上是為什麼我的 MySQL 浮點比較不準確?的詳細內容。更多資訊請關注PHP中文網其他相關文章!