Fortranでは、大きな倍精度浮動小数点数を最も近い整数に丸めることができるようにしたいと考えています。次のように私は大きな浮動小数点を整数に丸める
PROGRAM rounding
IMPLICIT NONE
INTEGER, PARAMETER :: DP = 8
REAL(KIND=DP) :: value
value = 12345678987.123456
print *, CEILING(value)
END PROGRAM ROUNDING
はしかし、これは出力正解しませんが、代わりに-2147483648
を与え、これを試みます。私はこれが浮動小数点の性質と精度に関連していることに感謝しますが、このような数値を四捨五入するのは妥当な目標です。
誰でも正しい方向に向けることができますか?
マイナーから他のメソッドを使用するように十分な桁種類を選択するために、SELECTED_INT_KINDを使用することができ整数種類について注: 'value'が倍精度の場合、' value = 12345678987.123456_dp'と書く方が良いでしょう。 '_dp'がなければ、単一の精度の数値を' value'に代入しており、いくつかの数字は失われます。あなたの場合、結果の整数の差は '12345678848'対' 12345678988'です。 –