テーブルには多くのデータがありますが、フィールドは float 型で、2 つの値は同じです
Payment value = 299.7
feiyong value = 299.7
クエリ ステートメント: feiyong> 0 and Payment>0 and Payment
現時点ではまだクエリ可能で、この問題が発生しているのは少数のアイテムだけで、その他は正常です
フローティングポイント数は非常に大きな数値を表すため、精度の一部が失われます
したがって、比較する場合は、差の絶対値が特定の最小値より小さい場合に 2 つの数値を等しいものとして扱う戦略を適用します
または、丸めを使用して有効な数値を取得し、それから比較してください
アプリケーションが正確な小数点以下の桁数を必要とする場合 (金融など)、DECIMAL 型を使用する必要があります
結局のところ、浮動小数点データはデータの正確性を保証できません
したがって、2 つの数値を比較するときは、差の絶対値が特定の非常に小さい数値よりも小さい場合にそれらを等しいものとして扱うという戦略を適用します
または、有効な数値を取得するために丸めを使用します。次に比較してください
アプリケーションに正確な小数点以下の桁数が必要な場合 (財務など)、DECIMAL 型を使用する必要があります
select ..., abs(Payment-feiyong) as aform ......where feiyong>0 and Payment>0having a > 1e-5
select ..., (Payment-feiyong) as aform ......where feiyong>0 and Payment>0having a > 1e-5