Dans Fortran, je souhaite pouvoir arrondir un grand flottant double précision à l'entier le plus proche. Je tenterai cela comme suit,Arrondir les grands flottants à l'entier
PROGRAM rounding
IMPLICIT NONE
INTEGER, PARAMETER :: DP = 8
REAL(KIND=DP) :: value
value = 12345678987.123456
print *, CEILING(value)
END PROGRAM ROUNDING
Cependant, cela ne sort pas la bonne réponse, mais donne lieu -2147483648
. J'apprécie que cela soit lié à la nature et à la précision des points flottants, mais arrondir un nombre comme celui-ci semble un objectif raisonnable.
Quelqu'un peut-il me diriger dans la bonne direction?
Minor note: si 'value' est un nombre double précision, il vaut mieux écrire' value = 12345678987.123456_dp'. Sans le '_dp', vous affectez un seul nombre de précision à' value' et certains chiffres sont perdus. Dans votre cas, la différence dans l'entier résultant est '12345678848' vs' 12345678988'. –