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
システム変数の使用に関する情報については、Server SQL Modes
をご参照ください。