숫자 반올림하기

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는 가장 가까운 정수—위 또는 아래로—로 가져갑니다. ceilingfloor는 각각 항상 가장 가까운 정수까지 올림하거나 내림하며, truncate는 단순히 소수점을 삭제합니다.

이 함수들에 대한 대체재는 우리의 roundTo처럼 사용자 정의 논리를 포함할 수도 있으며, 더 복잡한 요구사항에 대해 라이브러리(예: Data.Fixed)를 사용할 수도 있습니다.

round에서 절반의 경우를 Haskell이 어떻게 처리하는지에 대한 예기치 않은 결과에 주의하세요(가장 가까운 짝수로 반올림합니다).

참조