データ型の考慮事項: MySQL における浮動小数点と 10 進数
MySQL で数値データを扱う場合、浮動小数点データ型と 10 進数データ型のどちらを選択するかアプリケーションの動作に大きな影響を与える可能性があります。これらの主な違いを理解すると、ユースケースに適した型を選択することができます。
Float データ型
Float データ型は近似値を表し、バイナリ浮動小数点を使用します。保存用のポイント形式。 int 型よりも広いダイナミック レンジと高い精度を提供しますが、丸め誤差が発生しやすくなります。 Float は、座標や科学的測定値など、さまざまな精度の値を格納するのに適しています。
10 進データ型
10 進データ型は、正確な数値を表すように設計されています。データを 2 進化 10 進数として保存します。先頭または末尾のゼロの数に関係なく、固定の小数点以下の桁数を維持することで、正確な計算が保証されます。 Decimal は、財務計算、精度が重要な測定、または正確な数値表現が必要なアプリケーションに最適です。
正しい型の選択
どのデータ型を使用するかの決定使用は次の考慮事項に基づいて行う必要があります:
デモの例
次のことを考えてみましょうquery:
SELECT a / 3, b / 3, a / 3 * 3, b / 3 * 3 FROM numbers WHERE a = 100 AND b = 100;
a に 10 進データ型を使用し、b に float を使用します:
+--------------------+--------------------+--------------------+--------------------+ | a / 3 | b / 3 | a / 3 * 3 | b / 3 * 3 | +--------------------+--------------------+--------------------+--------------------+ | 33.333333333 | 33.333333333333 | 99.999999999000000000000000000000 | 100 | +--------------------+--------------------+--------------------+--------------------+
この場合、10 進数は 100 の 1/3 を正確に計算し、結果は 33.333333333 になります。ただし、float は 1/3 の近似値を使用するため、計算でわずかな丸め誤差が生じます。
次のクエリに示すように、合計の場合、精度を維持する点で 10 進数の方が float より優れています。
SELECT @a := (a / 3), @b := (b / 3), @a + @a + @a, @b + @b + @b FROM numbers WHERE a = 100 AND b = 100;
+--------+---------+-----------------+-----------------+ | @a | @b | @a + @a + @a | @b + @b + @b | +--------+---------+-----------------+-----------------+ | 33.3333 | 33.3333 | 99.99999999900000 | 100 | +--------+---------+-----------------+-----------------+
Decimal は値を正確に合計しますが、float は最終結果に丸め誤差を示します。
以上がMySQL の浮動小数点または小数点: どのデータ型をいつ使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。