엑셀(Excel) 부동소수점으로 표현한 수를 정확하게 판단하지 못하는 경우

 

환경 : Microsoft Excel 2010

 

부동소수점으로 표현한 수가 실수로 정확히 표현하지 못할 때 수학적 연산을 하면서 여러가지 문제를 발생시킬수 있습니다. 엑셀에서도 부등호를 사용하여 판단할 때 문제가 발생하겠죠. 예를 들어 0.1 의 제곱은 0.100000001490116119384765625 이 됩니다.

 

엑셀에서 샘플로 아래와 같은 경우가 있습니다. 1.2 – 1.1 을 했는데 결과는 0.1 이 나왔습니다. 그런데 부등호를 사용해서 >= 표현했으면 Yes 가 나와야 하는데 No 가 나왔습니다.

 

엑셀(Excel) 부동소수점으로 표현한 수를 정확하게 판단하지 못하는 경우

 

실제 값이 얼마인지 표시형식 > 자리수 늘임을 해봅니다. 그럼 실제 부동소수점 값이 얼마인지 나올겁니다.

엑셀(Excel) 부동소수점으로 표현한 수를 정확하게 판단하지 못하는 경우

 

 

화면에서는 0.1 로 보이지만 0.09999999999 가 실제 값입니다. 0.1 과 아주 가까운 값이지만 실제 0.1 아닌것이죠.

엑셀(Excel) 부동소수점으로 표현한 수를 정확하게 판단하지 못하는 경우

 

 

이것을 해결하기 위해서 ROUND 함수를 이용합니다. 소수점이하는 잘라버리고 반올림해서 비교하는 것이죠. 

 

=IF(ROUND(C18,1)>=0.1,"yes","no")

 

위와같이 ROUND 할때 소수점 자리수를 한자리로 주면 반올림해서 0.1 로 만들어 줍니다그럼 사용자가 원하던 결과가 나오게 되는 것이죠.

엑셀(Excel) 부동소수점으로 표현한 수를 정확하게 판단하지 못하는 경우

 

 

Posted by 녹두장군