12.20 高精度計算

MySQL 5.6 は、高精度計算、つまり、きわめて正確な結果が得られ、さらに無効な値を高いレベルで制御できる数値処理をサポートしています。高精度計算は、次の 2 つの機能に基づいています。

  • サーバーが無効なデータの受け入れまたは拒否に関してどの程度厳密かを制御する SQL モード。

  • 固定小数点数演算のための MySQL ライブラリ。

これらの機能は数値操作にいくつかの影響を与えるとともに、標準 SQL への高度の準拠を実現します。

  • 正確な計算: 厳密値数値の場合、計算に浮動小数点エラーは導入されません。代わりに、正確な精度が使用されます。たとえば、MySQL は .0001 などの数値を近似値ではなく厳密値として処理し、それを 10,000 回合計すると 1 に近いだけの値ではなく、正確に 1 の結果が生成されます。

  • 適切に定義された丸め動作: 厳密値数値の場合、ROUND() の結果は、ベースとなる C ライブラリの動作方法などの環境要因ではなく、その引数に依存します。

  • プラットフォームからの独立: 厳密値数値に対する操作は、Windows や Unix などの各プラットフォームにわたって同じです。

  • 無効な値の処理に対する制御: オーバーフローおよび 0 による除算が検出可能であり、これらはエラーとして処理できます。たとえば、あるカラムに対して大きすぎる値は、そのカラムのデータ型の範囲内に収まるように値が切り捨てられるようにするのではなく、エラーとして処理できます。同様に、0 による除算は、NULL の結果を生成する操作としてではなく、エラーとして処理できます。どちらのアプローチをとるかの選択は、サーバー SQL モードの設定によって決定されます。

次の説明では、古いアプリケーションとの非互換性の可能性を含め、高精度計算の動作方法のいくつかの側面について触れています。最後に、MySQL 5.6 が数値操作をどのように処理するかを正確に示すいくつかの例を示します。SQL モードの制御については、セクション5.1.7「サーバー SQL モード」を参照してください。


User Comments
Sign Up Login You must be logged in to post a comment.