Haskell:
숫자 반올림하기
방법:
Haskell은 Prelude에서 round, ceiling, floor, truncate 함수를 사용하여 반올림 연산을 합니다.
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
-- 특정 소수점 자리로 반올림하는 것은 Prelude에 없습니다.
-- 여기 사용자 정의 함수가 있습니다:
let roundTo n f = (fromInteger $ round $ f * (10^n)) / (10.0^^n)
print $ roundTo 1 num -- 3.6심층 이해
역사적으로, 반올림은 수치 해석과 컴퓨터 과학에서 매우 중요합니다. 특히 IEEE 754로 부동소수점 표현이 표준화되기 전에는 계산에서 오류 축적을 최소화하는 것이 중요했습니다.
무엇을 반올림하나요? round는 가장 가까운 정수—위 또는 아래로—로 가져갑니다. ceiling과 floor는 각각 항상 가장 가까운 정수까지 올림하거나 내림하며, truncate는 단순히 소수점을 삭제합니다.
이 함수들에 대한 대체재는 우리의 roundTo처럼 사용자 정의 논리를 포함할 수도 있으며, 더 복잡한 요구사항에 대해 라이브러리(예: Data.Fixed)를 사용할 수도 있습니다.
round에서 절반의 경우를 Haskell이 어떻게 처리하는지에 대한 예기치 않은 결과에 주의하세요(가장 가까운 짝수로 반올림합니다).
참조
- 반올림 함수에 대한 Haskell Prelude 문서: https://hackage.haskell.org/package/base-4.16.1.0/docs/Prelude.html
- 부동소수점 산술에 대한 Haskell Wiki: https://wiki.haskell.org/Floating_point_arithmetic
- 많은 언어에서 부동소수점이 어떻게 처리되는지에 대한 더 자세한 정보를 위한 IEEE 754-2008 표준: https://ieeexplore.ieee.org/document/4610935