Télécharger arrond.eso

Retour à la liste

Numérotation des lignes :

  1. C ARROND SOURCE CB215821 19/06/17 21:15:00 10229
  2. FUNCTION ARROND(B,PAS,K)
  3.  
  4. IMPLICIT INTEGER(I-N)
  5. IMPLICIT REAL*8 (A-H,O-Y)
  6.  
  7. REAL*8 ARROND
  8.  
  9. -INC CCREEL
  10. *
  11. * ARRONDI UNE BORNE B DONNEE SOUS LA FORME XXXXX.XX POUR QU'ELLE
  12. * SOIT UN MULTIPLE DE PAS AVEC UN ARRONDI SUPERIEUR SI K=1,
  13. * INFERIEUR SI K=0
  14. *
  15. *
  16. * DETERMINE COMMENT FAIRE L'ARRONDI
  17. *
  18. IF (B.LT.0.D0) THEN
  19. IF (K.EQ.0) THEN
  20. * ARRONDI PAR EN DESSOUS D'UNE BORNE NEGATIVE
  21. C=-1.D0
  22. ELSE
  23. * ARRONDI PAR AU DESSUS D'UNE BORNE NEGATIVE
  24. C= 0.D0
  25. ENDIF
  26. ELSE
  27. IF (K.EQ.0) THEN
  28. * ARRONDI PAR EN DESSOUS D'UNE BORNE POSITIVE
  29. C= 0.D0
  30. ELSE
  31. * ARRONDI PAR AU DESSUS D'UNE BORNE POSITIVE
  32. C= 1.D0
  33. ENDIF
  34. ENDIF
  35.  
  36. * PASSE EN NOMBRE ENTIER POUR AVOIR UN MODULO ENTIER EVITANT LES
  37. * PROBLEMES DE CODAGE EN MACHINE DES FLOTTANTS
  38. BB=B * 100.D0
  39. IF (BB.LT.0.D0) THEN
  40. IB=FLOOR(BB)
  41. ELSE
  42. IB=CEILING(BB)
  43. ENDIF
  44.  
  45. IPAS=CEILING(PAS*100.D0)
  46. I =NINT(B/PAS)
  47. J =INT(B/PAS)
  48. IR =ABS(MOD(IB,IPAS))
  49.  
  50. * CALCUL DE L'ARRONDI
  51. IF (IR .GE. 1) THEN
  52. ARROND=(I+C)*PAS
  53. ELSE
  54. ENDIF
  55. END
  56.  
  57.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales