To nie Haskell specyficzny, ale istnieje różnica między tymi funkcjami. Piętro oznacza najwyższą liczbę całkowitą nie większą niż podana liczba. Obcięcie oznacza usunięcie na pewnej długości, w tym przypadku części ułamkowej. Mają taki sam efekt dla zerowych i dodatnich liczb, ale nie dla negatywnych.
Oto krótkie porównanie w Pythonie:
>>> for i in range(-5,6):
... j=0.5*i
... print(j,floor(j),ceil(j),trunc(j),round(j))
...
-2.5 -3 -2 -2 -2
-2.0 -2 -2 -2 -2
-1.5 -2 -1 -1 -2
-1.0 -1 -1 -1 -1
-0.5 -1 0 0 0
0.0 0 0 0 0
0.5 0 1 0 0
1.0 1 1 1 1
1.5 1 2 1 2
2.0 2 2 2 2
2.5 2 3 2 2
Zasadniczo trunc() idzie w kierunku zera i podłogi() w kierunku ujemnym nieskończoności.
Razem Haskell początkujących, ale jak w większości innych języków, będziesz prawdopodobnie zobaczyć różnicę z liczb ujemnych ... – deceze
To był rzeczywiście mój problem. :) Dzięki! –