Gibt es einen Unterschied in der Funktionalität zwischen floor
und truncate
in Haskell?
Sie scheinen die gleiche Funktionalität zu haben und sie haben dieselbe Typ-Signatur:
truncate :: (Integral b, RealFrac a) => a -> b
floor :: (Integral b, RealFrac a) => a -> b
Ja, für negative Zahlen. Wenn wir die Dokumentation lesen, sehen wir:
truncate :: Integral b => a -> b
zurück
truncate x
gibt die Ganzzahl am nächstenx
zwischen null undx
und:
floor :: Integral b => a -> b
ist
floor x
gibt die größte ganze Zahl zurück, die nicht größer alsx
Wenn wir also eine negative Zahl wie -3.5
eingeben, erhalten wir:
Es ist nicht hakellspezifisch, aber es gibt einen Unterschied zwischen diesen Funktionen. Stockwerk bedeutet die höchste Ganzzahl, die nicht höher als eine gegebene Zahl ist. Verkürzen bedeutet, dass die Länge etwas entfernt wird, in diesem Fall der Bruchteil. Diese haben den gleichen Effekt für Null und positive Zahlen, aber nicht negativ.
Hier ist ein kurzer Vergleich in Python:
%Vor%Im wesentlichen trunc () geht gegen Null und floor () gegen negative Unendlichkeit.
Tags und Links haskell