질문
Q) 엑셀 계산값에 아래와 같이 소수점 차이가 계속 발생하는데
어떤 이유로 소수점에서 차이가 생기는 건가요ㅠ?
A1 : 150.00000000000000
B1 : 140.00000000000000
A1-B1 :10.000001000
왜 이런현상이 발생하는지 알고싶습니다.!!
* 참고로 A1과 B1셀은 세줄 이상의 복잡한 수식에서 추출된 값을 값 복사로 끌고온 상태입니다!
부동소수점 오차
Excel에서 이러한 소수점 차이가 발생하는 것은 주로 부동 소수점 연산의 특성과 관련이 있습니다.
부동 소수점 연산은 컴퓨터에서 실수를 근사적으로 표현하고 계산하는 방법입니다.
이 과정에서 다음과 같은 요인들이 소수점에서의 미세한 차이를 일으킬 수 있습니다:
1. 부동 소수점 오차
- 컴퓨터는 2진수를 사용하여 실수를 표현합니다. 일부 실수는 2진수로 정확하게 표현될 수 없어 근사치로 처리됩니다. 예를 들어, 10진수의 0.1은 2진수에서 완벽하게 표현되지 않아 근사값으로 처리됩니다. 이로 인해 계산 결과에 작은 오차가 발생할 수 있습니다.
- 10진수의 0.1을 2진수로 표현하는 것이 어려운 이유는 10진수와 2진수 간의 기본적인 차이 때문입니다.
- 일부 숫자는 한 진법에서는 간단하게 표현될 수 있지만, 다른 진법에서는 정확하게 표현할 수 없습니다.
- 10진수 0.1은 2진수로 완벽하게 표현할 수 없습니다.
- 2진수에서 분수를 표현하기 위해서는 2의 거듭제곱 분수(1/2, 1/4, 1/8, 1/16, ...)를 사용합니다.
- 0.1(10진수)을 2진수로 변환하려면 무한한 길이의 반복되는 분수를 사용해야 합니다.
참고 : 2진수 0.1 표현법
- 2진수에서 0.1을 표현하려면 다음과 같은 과정을 거쳐야 합니다:
- 0.1(10진수)은 2진수로 0.0001100110011001100110011... 과 같이 무한히 반복됩니다.
- 이 수는 1/16 + 1/32 + 1/256 + 1/512 + ... 와 같이 계속해서 작은 분수들을 더해야 합니다.
- 이는 1/3이 10진수에서 0.3333333... 으로 무한히 반복되는 것과 유사합니다. 정확한 값을 표현하기 위해 무한한 수의 자릿수가 필요하기 때문에 컴퓨터는 이를 근사값으로 처리하게 됩니다. 이러한 근사치 표현은 계산 과정에서 미세한 오차를 발생시킬 수 있습니다.
2. 복잡한 수식의 중간 결과
복잡한 수식을 계산할 때, 중간 단계의 결과들도 부동 소수점 오차를 포함할 수 있습니다. 이러한 오차들이 최종 결과에 누적되어 더 큰 차이를 만들 수 있습니다.
3. 값 복사시 오차 포함
A1과 B1의 값을 다른 셀에서 값 복사로 가져온 경우, 원본 셀의 계산 결과에 이미 부동소수점 오차가 있었을 수 있습니다. 이 오차가 A1과 B1의 차이 계산에도 영향을 미칩니다.
해결 방법
중요한 계산에서는 Excel의 ROUND 함수를 사용하여 소수점 이하 특정 자리까지만 반올림하거나, 필요한 경우 정밀도를 높여 계산하는 방법이 있습니다.
예를 들어, =ROUND(A1-B1, 2)와 같은 식으로 사용하여 소수점 두 자리까지만 사용할 수 있습니다.
'TIP&TECH' 카테고리의 다른 글
컴퓨터 폴더에서 엑셀파일 미리보기 오류시 (파일을 다른 사람이 편집중) (0) | 2023.12.14 |
---|---|
엑셀에서 조건부 서식을 사용하여 특정셀 색깔 채우기 (0) | 2023.12.14 |
여러 엑셀 파일 동시 인쇄 방법 (한글, 워드, PPT 동일) (0) | 2023.12.13 |