파이썬 공식 문서에 보면 부동 소수점 산술 오류에 관한 글이 있다.
알고리즘 문제를 풀 때 가끔 부동 소수점 오류 때문에 발생하는 문제를 해결하는 법과
파이썬에서의 나누기를 항상 헷갈리는 나를 위한 정리이다.
부동 소수점 산술이란?
부동 소수점 방식은 컴퓨터 상에서는 실수를 근사하여 표현하는 수이다.
쉽게 말해 이진법을 사용하여 실수를 나타내기 때문에 정확한 값을 나타낼 수 없다.
컴퓨터에서는 십진수 0.1을
0.1000000000000000055511151231257827021181583404541015625
컴퓨터로 표현할 수 있는 0.1과 가장 가까운 값을 내놓는다.
1 / 10을 출력해 보면
0.1이 나오지만 실제 저장된 값은 위에 수가 저장되기에 오류가 생긴다.
0.1 + 0.1 == 0.2는 false가 나오는 이유다.
해결방안
공식 문서에 따르면 fractions, decimal 모듈을 사용 권장한다.
fractions
from fractions import Fraction
유리수를
Fraction(분자, 분모) 형태로 만들어 주는 것이다.
result = Fraction(1, 10) + Fraction(1, 10)
float(result)
>> 0.2
decimal
from decimal import Decimal
Decimal('1') / Decimal('8')
>> Decimal('0.125')
decimal 모듈은 기본 28자리의 정밀도를 가지며 십진수 산술을 위한 모듈입니다.
파이썬 나누기 연산
기본 나눗셈 /
나눗셈의 몫 //
나눗셈의 나머지 %
'기초내용' 카테고리의 다른 글
vscode에서 github 커밋, 푸시, 풀(github desktop) (0) | 2023.02.16 |
---|---|
vscode로 github repositories 가져오기 (0) | 2023.02.16 |
Terminal Usage 정리 (0) | 2020.07.05 |
What is Hosting (0) | 2020.07.05 |
DNS and how does work? 정리 (0) | 2020.07.03 |
댓글