Haskell:
Avrunding av tall

Hvordan:

Haskell bruker funksjonene round, ceiling, floor og truncate fra Prelude for avrundingsoperasjoner.

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
  
  -- Å runde til et spesifikt desimalpunkt er ikke i Prelude.
  -- Her er en tilpasset funksjon:
  let roundTo n f = (fromInteger $ round $ f * (10^n)) / (10.0^^n)
  print $ roundTo 1 num -- 3.6

Dypdykk

Historisk sett er avrunding viktig i numerisk analyse og informatikk fordi det er avgjørende for å minimere oppsamling av feil i beregninger, spesielt før flyttallsrepresentasjoner ble standardisert med IEEE 754.

Hva skal man runde til? round tar deg til nærmeste heltall—opp eller ned. ceiling og floor runder alltid opp eller ned til nærmeste heltall, mens truncate bare dropper desimalpunktene.

Alternativer til disse funksjonene kan innebære tilpasset logikk, som vår roundTo, eller du kan dra inn biblioteker (som Data.Fixed) for mer komplekse behov.

Pass deg for uventede resultater på grunn av hvordan Haskell håndterer halvveis tilfeller i round (den runder til det nærmeste partallet).

Se Også