Haskell:
Afronden van getallen

Hoe:

Haskell gebruikt de functies round, ceiling, floor en truncate uit de Prelude voor afrondingsbewerkingen.

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

  -- Afronden naar een specifieke decimale plaats zit niet in Prelude.
  -- Hier is een aangepaste functie:
  let roundTo n f = (fromInteger $ round $ f * (10^n)) / (10.0^^n)
  print $ roundTo 1 num -- 3.6

Diepere Duik

Historisch gezien is afronden belangrijk in numerieke analyse en informatica omdat het cruciaal is om accumulatie van fouten in berekeningen te minimaliseren, vooral voordat drijvende-kommavoorstellingen werden gestandaardiseerd met IEEE 754.

Waar naar af te ronden? round brengt je naar het dichtstbijzijnde geheel getal—omhoog of omlaag. ceiling en floor ronden altijd omhoog of omlaag af naar het dichtstbijzijnde geheel getal, terwijl truncate simpelweg de decimalen laat vallen.

Alternatieven voor deze functies kunnen aangepaste logica inhouden, zoals onze roundTo, of je zou bibliotheken kunnen gebruiken (zoals Data.Fixed) voor complexere vereisten.

Pas op voor onverwachte resultaten door hoe Haskell halverwege gevallen in round behandelt (het rondt af naar het dichtstbijzijnde even getal).

Zie Ook