Haskell:
Arrondir les nombres

Comment faire :

Haskell utilise les fonctions round, ceiling, floor et truncate du Prelude pour les opérations d’arrondi.

import Prelude

main :: IO ()
main = do
  let num = 3.567
  print $ round num    -- 4
  print $ ceiling num  -- 4
  print $ floor num    -- 3
  print $ truncate num -- 3
  
  -- L'arrondi à une décimale spécifique n'est pas dans Prelude.
  -- Voici une fonction personnalisée :
  let roundTo n f = (fromInteger $ round $ f * (10^n)) / (10.0^^n)
  print $ roundTo 1 num -- 3.6

Approfondissement

Historiquement, l’arrondi est significatif dans l’analyse numérique et l’informatique car il est crucial pour minimiser l’accumulation d’erreurs dans les calculs, particulièrement avant que les représentations à virgule flottante ne soient standardisées avec l’IEEE 754.

À quoi arrondir ? round vous amène au plus proche entier – vers le haut ou le bas. ceiling et floor arrondissent toujours au plus proche entier, respectivement vers le haut ou vers le bas, tandis que truncate se contente de supprimer les points décimaux.

Des alternatives à ces fonctions pourraient impliquer une logique personnalisée, comme notre roundTo, ou vous pourriez utiliser des bibliothèques (comme Data.Fixed) pour des besoins plus complexes.

Faites attention aux résultats inattendus dus à la manière dont Haskell gère les cas à mi-chemin dans round (il arrondit au nombre pair le plus proche).

Voir Aussi