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
システム変数の使用に関する情報については、項4.2.6. 「SQL モード」
をご参照ください。