Elm:
Zaokrąglanie liczb
Jak to zrobić:
Moduł Basics
w Elm dostarcza sprytne funkcje do zaokrąglania: round
, floor
i ceiling
. Oto jak ich używać.
import Basics exposing (round, floor, ceiling)
-- Zaokrąglenie do najbliższej liczby całkowitej
round 3.14 --> 3
round 3.5 --> 4
-- Zaokrąglenie w dół
floor 3.999 --> 3
-- Zaokrąglenie w górę
ceiling 3.001 --> 4
-- Obcięcie miejsc dziesiętnych bez zaokrąglania
truncate 3.76 --> 3
Elm dostarcza również toLocaleString
do zaokrąglania do stałej liczby miejsc dziesiętnych:
import Float exposing (toLocaleString)
-- Zaokrąglenie do dwóch miejsc po przecinku
toLocaleString 2 3.14159 --> "3.14"
Wnikliwe spojrzenie
Elm to silnie typowany język funkcyjny, który releguje efekty uboczne do “krawędzi” architektury. Oznacza to, że funkcje takie jak zaokrąglanie muszą być czyste i przewidywalne. Historycznie, zaokrąglanie jest powszechną operacją w wielu językach programowania, które radzą sobie z nieprecyzyjnością arytmetyki liczby zmiennoprzecinkowej.
Podejście Elm do zaokrąglania jest proste - funkcje są czyste i zgodne z matematycznymi definicjami zaokrąglania, podłogi i sufitu. Elm przewiduje wspólne potrzeby, dostarczając wbudowane funkcje, ponieważ zarządzanie precyzją jest częstym wymaganiem, zwłaszcza w finansach i grafice.
Alternatywy dla wbudowanych funkcji Elm mogą obejmować niestandardowe implementacje przy użyciu operacji arytmetycznych, ale dodaje to niepotrzebną złożoność, gdy biblioteka standardowa już wykonuje pracę efektywnie.
W obecnej wersji Elm używa podstawowej arytmetyki zmiennoprzecinkowej JavaScript, utrzymując zgodność ze standardem IEEE 754, co jest ważne do zapamiętania podczas rozważania precyzji i potencjalnych błędów zmiennoprzecinkowych.
Zobacz również
- Oficjalna dokumentacja modułu
Basics
Elm: https://package.elm-lang.org/packages/elm/core/latest/Basics - Szczegółowe spojrzenie na działanie liczb zmiennoprzecinkowych w informatyce: https://floating-point-gui.de/
- Moduł
Float
Elm do dalszych operacji na liczbach zmiennoprzecinkowych: https://package.elm-lang.org/packages/elm/core/latest/Float