浮動小数点数の演算結果はGSとオープン系OSで一致しますか?

浮動小数点数の演算結果はGSとオープン系OSで一致しますか?
GSとオープン系のOSでは使用しているCPUの仕様が異なるため、浮動小数点数の演算結果は一致しない場合があります。
浮動小数点数は内部的に、GSでは16進数、オープン系では2進数により値を表現していますが、全ての値が表現できるわけではなく、近似値で表されています。たとえば、10進数で1/3(三分の一)が3.333~と正確には表せないように、2進数では1/10(十分の一)を正確に表現することができません。GSの16進表現も同様に表せない値があります。これらの近似値表現を使った値を演算に使用すると、演算結果は誤差を含みます。
これは、COBOLの仕様ではなくCPUの仕様の違いに依存しています。したがって、ホストとオープン系の浮動小数点数の転記、演算で同じ答えを求めることは、アーキテクチャーの違いから困難です。

プログラミングで行える対策としては、「浮動小数点数を他のデータ形式で保持し、専用の演算ルーチン(エミュレータ)を作成してソフトウェア処理する」または「変換テーブルを用意し、オープン系の演算結果をホストの値に変換する」といった方法が考えられます。
製品・サービス情報
対象製品NetCOBOL
プラットフォームWindows x86, Windows x64, .NET, Solaris, Linux x86, Linux Intel64, Linux Itanium
アンサー種別 技術サポート
このページの先頭へ