MySQL 5.1は精密計算に対するサポートを提供します:非常に正確な結果をもたらす数値処理と無効な値に対する高度なコントロール。精密計算はこれら2つの特徴に基づいています:
どの程度厳格に無効なデータを容認するか拒否しようとしているかを管理するSQLモード。
固定小数点演算に対するMySQLライブラリー。
これらの特徴は数値演算に対していくつかの帰結的意味を持っています:
精密計算::正確な値の数に対して、計算は浮動小数点エラーを導入しません。にもかかわらず、精密計算は使用されています。例えば、.0001のような数は近似値としてより、むしろ正確な値として取り扱われ、10,000回それを合計することは、単に1に「近い」値ではなく、正確に1とする結果を生みます。
明確な四捨五入挙動:正確な価値を持つ数に対するROUND()の結果は、基礎をなすCライブラリを作動させる方法のような環境要因ではなく、その引数に依存します。
プラットフォームから独立:正確な数値に関する演算はWindowsやUnixのような異なったプラットホームを使ってもすべて同じです。
無効な値の取り扱いコントロール:ゼロによるオーバーフローと分割は探知できますが、エラーとして扱うことができます。例えば、あなたはコラムに対して大きすぎる値の場合、切り捨てて、データタイプの範囲内に納めないで、エラーとして扱うことができます。同様に、あなたはゼロによる分割をNULLの結果を生むオペレーションとしてよりむしろエラーとして扱うことができます。採用すべき方法の選択はsql_modeシステム変数の設定によって決まります。
これらの特徴による重要な結果は、MySQL 5.1は標準SQLに高度に準拠したものを提供するということです。
以下の部分には、(古いアプリケーションに不適合しない恐れを含めて)精密計算を実施する方法のいくつかの局面が含まれています。終わりの部分に、MySQL 5.1がいかに正確に演算を処理するかを明らかにする若干の例を掲載しましたのでご覧ください。SQL モードをコントロールするためのsql_modeシステム変数の使用に関する情報については、SQL Modesをご参照ください。
