浮動小数点の制限事項

数値には、FLOATやDOUBLEなどのバイナリ浮動小数点データ型では正確に表せないものがあります。

10進数からバイナリ浮動小数点表現への変換またはその逆の変換の場合、バイナリ浮動小数点形式の表現上の制限事項のために端数処理エラーが発生することがよくあります。たとえば、1.365などの10進数をDOUBLE型に変換する場合、1.364999999999999と表されます。この数値は、小数点以下3桁に端数処理され、結果は1.365です。しかし、この数値を小数点以下2桁に端数処理すると、結果は1.36であり、1.37ではありません。

FLOAT型およびDOUBLE型の制限事項を回避するには、FLOATおよびDOUBLEのデータ型をNUMERIC型に更新することをお薦めします。NUMERICデータ型への切替え以外に、バイナリ浮動小数点データ型でこの固有な制限事項を修正する回避策はありません。