[CS] float 타입 변수의 연산은 왜 부정확할까
·
CS
개요오늘은 업무 중에 직접 겪었던 문제를 계기로, 그 과정에서 생긴 궁금증을 조금 더 깊이 파헤쳐보려고 합니다. 업무 시스템에서 값을 계산하는 과정에서 float 타입 변수들끼리 연산을 수행했는데, 예상과 달리 계산 결과의 정확도가 깨지게 되었습니다. 디버깅을 진행하면서 실제 연산 결과가 기대한 값과 다르다는 것을 확인할 수 있었습니다. 해당 문제는 다음과 같은 단순한 계산 과정에서 발생했습니다.출장비 = 식비 + 숙박비세 변수(출장비, 식비, 숙박비) 모두 float 타입이었고, 단순한 덧셈 연산이었음에도 불구하고 결과 값에 오차가 발생했습니다. 컴퓨터는 숫자를 포함한 모든 데이터를 이진법(2진수)으로 표현하고 처리합니다. 하지만 이진법으로는 모든 실수를 정확하게 표현할 수 없습니다. 특히 10진수 소..