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.6Vertiefung
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
- Haskell Prelude Dokumentation für Rundungsfunktionen: https://hackage.haskell.org/package/base-4.16.1.0/docs/Prelude.html
- Das Haskell Wiki zur Gleitkommadarstellung: https://wiki.haskell.org/Floating_point_arithmetic
- IEEE 754-2008 Standard für mehr darüber, wie Gleitkomma in vielen Sprachen gehandhabt wird: https://ieeexplore.ieee.org/document/4610935