Haskell:
Zahlen runden

Wie:

Haskell verwendet die Funktionen round, ceiling, floor und truncate aus dem Prelude für Rundungsoperationen.

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
  
  -- Runden auf eine spezifische Dezimalstelle ist nicht in Prelude enthalten.
  -- Hier ist eine benutzerdefinierte Funktion:
  let roundTo n f = (fromInteger $ round $ f * (10^n)) / (10.0^^n)
  print $ roundTo 1 num -- 3.6

Vertiefung

Historisch gesehen ist das Runden in der numerischen Analyse und Informatik von Bedeutung, da es entscheidend ist, die Akkumulation von Fehlern in Berechnungen zu minimieren, insbesondere bevor Gleitkommadarstellungen mit IEEE 754 standardisiert wurden.

Worauf soll gerundet werden? round bringt Sie zur nächstgelegenen ganzen Zahl - nach oben oder unten. ceiling und floor runden immer auf bzw. ab zur nächsten ganzen Zahl, während truncate einfach die Dezimalstellen fallen lässt.

Alternativen zu diesen Funktionen könnten benutzerdefinierte Logik beinhalten, wie unsere roundTo, oder man könnte Bibliotheken (wie Data.Fixed) für komplexere Anforderungen einbeziehen.

Achten Sie auf unerwartete Ergebnisse aufgrund der Behandlung von Halbwegsfällen durch Haskell in round (es rundet auf die nächste gerade Zahl).

Siehe auch