Rational Developer for System z
Enterprise PL/I for z/OS, Version 3.8, 言語解説書

IBM 16 進浮動小数点の ROUND

IBM 16 進浮動小数点の結果の精度は、ソースの引数の精度と同じです。

コンパイラー・オプション USAGE(ROUND(IBM)) のもとでは、z/OS 上以外、結果の値はソースと同じになります。ここで、ソースがゼロでない場合は、結果は、ソースの右端ビットで定まることによって得られます。

コンパイラー・オプション USAGE(ROUND(ANS)) のもとでは、結果の値は次の式によって得られます。ここで、b = 16 (=radix(x)) で、e = exponent(x) です。

round(x,n) = sign(x)*(b(e-n))* floor(abs(x)* (b(n-e)) + 1/2)

USAGE(ROUND(ANS)) のもとでは、丸めは基数 16 の丸めであり、認識の甘いユーザーが予測したものと異なる結果が出ることがあります。 例えば、USAGE(ROUND(ANS)) でコンパイルされ、IBM 16 進浮動小数点命令が使用された場合は、以下の連続した 3.1415926do の丸めにより、次の値が算出されます。

    dcl x float bin(53) init( 3.1415926d0 );

    display( round(x,1) );  /*  3.000000000000000E+00  */
    display( round(x,2) );  /*  3.125000000000000E+00  */
    display( round(x,3) );  /*  3.140625000000000E+00  */
    display( round(x,4) );  /*  3.141601562500000E+00  */
    display( round(x,5) );  /*  3.141586303710938E+00  */
    display( round(x,6) );  /*  3.141592979431152E+00  */

Terms of use | Feedback

This information center is powered by Eclipse technology. (http://www.eclipse.org)