부동소수점 연산❓ ✨

YaR Lab·2024년 9월 25일
0

TIL✨

목록 보기
136/136
post-thumbnail

[왜 소수점 연산은 정확하지 못할까❓]
📘programmers: 이모티콘 할인행사
이 문제를 풀면서 3개의 테스트 케이스를 통과하지 못하는 문제가 발생했다. 2시간을 코드를 들여다 봐도 문제가 없어서 결국 질문 게시판을 참고했다. 부동 소수점 연산의 정확도 차이로 인해 계산식의 괄호를 바꿨더니 해결됐다.

(price * (100 - discount)) / 100 # 정답
price * ((100 - discount) / 100) # 오답

두 계산식의 차이는 수학적으로는 같지만 컴퓨터에서는 나눗셈을 먼저하냐 아니면 나중에 나눗셈을 하냐에 따라 오차가 발생하는 것 같다.

print(0.1 + 0.2) # 출력 0.30000000000000004

대표적인 또 다른 예시가 있다.

그래서 결론은 알고리즘을 풀 때비즈니스 로직을 짤 때 소수점 연산이 필요한 부분은 최대한 나중에 나눗셈을 해주는 것이 정확도를 높이는 방법이다.

0개의 댓글