fortran66のブログ

fortran について書きます。

Rounding

Fortran95/2003 Explained 19.11 より。I/O時の Rounding 指定。
ROUND = xx

  1. RU Up   正無限大方向へ丸め
  2. RD Down 負無限大方向へ丸め
  3. RZ Zero  0原点方向へ丸め
  4. RN Nearest  最近接値に丸め、但しちょうど等距離にある場合はプロセッサ依存。
  5. RC Compatible 最近接値に丸め、但しちょうど等距離にある場合は0原点から遠い方へ。
  6. RP Processor_defined プロセッサ依存。

IEEE745 の丸めでは等距離にある場合の処理がよろしくないので、四捨五入的な RC があるのは便利かもしれないです。

結果

例題としてはいまいちな数字ですが・・

ソースコード

PROGRAM rounding  !19.11
IMPLICIT NONE
REAL, PARAMETER :: pi = 4.0 * ATAN(1.0) !F2003
PRINT '(RU, F15.8)', pi
PRINT '(RD, F15.8)', pi
PRINT '(RZ, F15.8)', pi
PRINT '(RN, F15.8)', pi
PRINT '(RC, F15.8)', pi
PRINT '(RP, F15.8)', pi
!
PRINT '(RU, F15.8)', -pi
PRINT '(RD, F15.8)', -pi
PRINT '(RZ, F15.8)', -pi
PRINT '(RN, F15.8)', -pi
PRINT '(RC, F15.8)', -pi
PRINT '(RP, F15.8)', -pi
STOP
END PROGRAM rounding