為什麼我的 MySQL 浮點比較不準確?

Mary-Kate Olsen
發布: 2024-11-08 13:45:02
原創
988 人瀏覽過

Why are My MySQL Floating-Point Comparisons Inaccurate?

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板