작성
·
204
0
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
round가 round half even 방식이라 짝수값에서 내림을 하는 것은 이해 했고 소수 첫째 자리에서 반올림 하고 싶으면 0.5를 더하고 int 로 감싸서 몫을 구하는 것을 이해했습니다.
소수 두 번째 자리도 시도해 보는 도중 정수에 10을 나누는 것과 0.1을 곱하는 것의 결과가 다르다는 것을 알게 되었습니다.
혹시 다른 이유가 무엇인지 알 수 있을까요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
질문하신 “정수에 10을 나누는 것과 0.1을 곱하는 것의 결과가 다른 이유”에 대해 설명드리겠습니다.
파이썬과 같은 프로그래밍 언어에서, 부동 소수점을 사용하여 실수를 표현할 때에는 정확한 값이 아닌 근사값으로 표현됩니다. 이 때문에 곱셈과 나눗셈 연산을 수행할 경우, 부동 소수점의 정밀도 문제로 인해 미묘한 차이가 발생할 수 있습니다.
정수를 10으로 나누는 작업은, 해당 정수를 10진법 기준으로 소수점 한 자리 아래로 내리는 깔끔한 연산입니다. 이에 반해, 0.1을 곱하는 작업은 10진법에서 깔끔하게 표현되지만, 컴퓨터가 사용하는 2진법에서는 정확하게 표현되지 않는 근사값을 사용합니다. 따라서, 이 과정에서 소수점 아래의 수가 미세하게 달라질 수 있으며, 이로 인해 최종 연산 결과에 차이가 발생할 수 있습니다.
이러한 부동 소수점 연산의 특성 때문에 프로그래밍을 할 때는, 특히 금융 계산 같이 정확한 값이 중요한 경우, 주의 깊게 로직을 구성해야 합니다. 가능하면 정수 연산을 사용하거나, decimal과 같은 정밀도가 더 높은 데이터 타입을 사용하는 것도 한 방법입니다.
이러한 내용은 기본적인 컴퓨터 과학 및 프로그래밍 원리와 연관되어 있으며, 이에 대해 더 자세히 알고 싶으시다면 관련 내용을 다루는 강의나 문서를 찾아보는 것을 추천드립니다.
도움이 되셨길 바랍니다.