반응형
부동소수점에 관하여
부동소수점은 컴퓨터에서 실수를 근사적으로 표현하기 위해 사용되는 방식입니다. 실수는 유한한 비트로 표현되기 때문에 정확한 값을 가지지 못하고 근삿값으로 저장됩니다. 부동소수점 표기는 기본적으로 부호 비트, 지수부, 가수부로 구성됩니다. 이진 부동소수점 표현에서 0.1 같은 값을 정확히 표현할 수 없어 계산 시 오차가 발생할 수 있습니다. 부동소수점의 한계로 인해 정밀도가 요구되는 계산에서는 주의가 필요하며, 적절한 반올림과 포맷팅이 중요합니다.
주피터 노트북에서 파이썬에 의한 부동소수점 처리 예제를 가지고 설명합니다.
부동소수점 계산과 반올림
셀 1: format((0.1 + 0.2), '.1f')
format((0.1 + 0.2), '.1f')
- 설명:
- 이 코드는
0.1 + 0.2
의 결과를 소수점 첫째 자리까지 포맷하여 문자열로 반환합니다. format(value, format_spec)
함수는 주어진value
를format_spec
에 맞춰 포맷팅 하는 함수입니다.'.1f'
는 소수점 이하 1자리까지의 부동소수점 형식으로 포맷하라는 의미입니다.
- 이 코드는
- 결과:
'0.3'
0.1 + 0.2
는 부동소수점의 정확도로 인해0.30000000000000004
로 계산되지만, 포맷팅에 의해 소수점 첫째 자리까지 반올림된0.3
이 문자열로 반환됩니다.
셀 2: round(0.1 + 0.2, 1)
round(0.1 + 0.2, 1)
- 설명:
- 이 코드는
0.1 + 0.2
의 결과를 소수점 첫째 자리까지 반올림합니다. round(number, ndigits)
함수는 주어진number
를ndigits
위치까지 반올림합니다.
- 이 코드는
- 결과:
0.3
0.1 + 0.2
는 부동소수점의 정확도로 인해0.30000000000000004
로 계산되지만, 소수점 첫째 자리까지 반올림된0.3
이 반환됩니다.
셀 3: round(2.675, 2)
round(2.675, 2)
- 설명:
- 이 코드는
2.675
를 소수점 둘째 자리까지 반올림합니다. round(number, ndigits)
함수는 주어진number
를ndigits
위치까지 반올림합니다.
- 이 코드는
- 결과:
2.67
- 이 결과는 부동소수점의 특성 때문에 발생합니다.
2.675
는 내부적으로 정확히 표현되지 않으며, 실제로는2.6749999999999998
로 표현됩니다. 따라서 소수점 둘째 자리까지 반올림하면2.67
이 됩니다.
부동소수점 계산과 반올림의 특징
- 부동소수점 계산의 한계:
- 컴퓨터에서 부동소수점을 표현하는 방식 때문에
0.1 + 0.2
같은 계산은 정확히0.3
이 되지 않을 수 있습니다. 이는 이진 부동소수점 표현 방식의 정밀도 한계로 인한 것입니다.
- 컴퓨터에서 부동소수점을 표현하는 방식 때문에
- 반올림의 특성:
round
함수는 반올림할 자리의 값과 그다음 자릿수를 기준으로 반올림을 수행합니다.- 부동소수점의 내부 표현이 정확하지 않기 때문에, 우리가 예상하는 반올림 결과와 다를 수 있습니다.
결론
이 예제들은 파이썬에서 부동소수점 연산의 특성과 format
, round
함수를 사용하여 숫자를 원하는 형식으로 표현하고 반올림하는 방법을 보여줍니다. 부동소수점 연산의 한계를 이해하고 적절한 포맷팅과 반올림을 통해 정확한 결과를 얻는 것이 중요합니다.
'실버를 위한 코딩 > 파이썬' 카테고리의 다른 글
파이썬의 기본 자료형 7가지 (1) | 2024.06.11 |
---|---|
[파이썬] 데시멀(Decimal) 타입 사용, 10진 소수점 연산 (0) | 2024.05.30 |
[프로그램 언어 타입] 파이썬과 자바스크립트의 비교 (0) | 2024.05.28 |
[파이썬] 파이썬은 '동적 타입 언어'이면서 '강한 타입 언어' (0) | 2024.05.27 |
네이버에서 '유튜브'를 검색하고 그 결과로 나오는 기사 제목을 가져오는 작업 (0) | 2024.05.12 |