MySQL では、精度計算がサポートされます: 数値の処理によって非常に正確な結果が得られ、無効な値をより詳細に制御できます。 高精度計算は、次の 2 つの機能に基づいています。
サーバーが無効なデータの受け入れまたは拒否に関してどの程度厳密かを制御する SQL モード。
固定小数点数演算のための MySQL ライブラリ。
これらの機能は数値操作にいくつかの影響を与えるとともに、標準 SQL への高度の準拠を実現します。
正確な計算: 厳密値数値の場合、計算に浮動小数点エラーは導入されません。 代わりに、正確な精度が使用されます。 たとえば、MySQL は
.0001
などの数値を近似値ではなく厳密値として処理し、それを 10,000 回合計すると 1 に「近い」だけの値ではなく、正確に1
の結果が生成されます。適切に定義された丸め動作: 厳密値数値の場合、
ROUND()
の結果は、ベースとなる C ライブラリの動作方法などの環境要因ではなく、その引数に依存します。プラットフォームからの独立: 厳密値数値に対する操作は、Windows や Unix などの各プラットフォームにわたって同じです。
無効な値の処理に対する制御: オーバーフローおよび 0 による除算が検出可能であり、これらはエラーとして処理できます。 たとえば、あるカラムに対して大きすぎる値は、そのカラムのデータ型の範囲内に収まるように値が切り捨てられるようにするのではなく、エラーとして処理できます。 同様に、0 による除算は、
NULL
の結果を生成する操作としてではなく、エラーとして処理できます。 どちらのアプローチをとるかの選択は、サーバー SQL モードの設定によって決定されます。
次の説明では、古いアプリケーションとの非互換性の可能性を含め、高精度計算の動作方法のいくつかの側面について触れています。 最後に、MySQL が数値操作を正確に処理する方法を示すいくつかの例を示します。 SQL モードの制御については、セクション5.1.11「サーバー SQL モード」を参照してください。