Nick은 수식 “= 0.28100-INT (0.28100) = 0″이 분명히 참인 경우에도 False를 반환합니다. 그는 문제가 반올림과 컴퓨터가 이진 산술 등을 사용하는 방법과 관련이 있다고 믿습니다. Nick은 더 큰 IF 문의 일부로 공식을 사용하고 있으며 Excel에 손을 뻗어 물릴 수있는 다른 반올림 오류가 있다고 가정합니다. . 그는 이와 같은 공식 함정을 피할 수있는 간단한 방법이 있는지 궁금합니다.

이러한 유형의 문제를 방지하는 간단한 방법을 살펴보기 전에 문제가 존재하는 이유를 이해하는 것이 중요합니다. Nick이 지적했듯이 이것은 이진 산술과 Excel이 정보를 반올림한다는 사실과 관련이 있습니다. 배후에서 Excel은 항상 정보를 15 자리로 반올림합니다. Nick이 작업하는 계산을 고려하십시오.

=0.28100-INT(0.28100)=0

Excel이이를 처음 계산할 때 Excel이 뒤 따르는 우선 순위는 다음과 같은 방식으로 계산합니다.

=(0.28100-INT(0.28100))=0

추가 괄호 세트에 유의하십시오. 마지막 등호 왼쪽에있는 모든 결과는 3.55E-15입니다. 즉,이 (긴) 공식으로 끝납니다.

=0.00000000000000355=0

이것은 분명히 사실이 아니므로 False 값이 반환됩니다. 이 상황을 “수정”하는 방법에는 여러 가지가 있습니다. 이 경우 가장 쉬운 방법은 단순히 수식을 변경하여 0과 비교할 필요가 없도록하는 것입니다.

=0.28100=INT(0.28100)

이 수식은 예상대로 True를 반환합니다. 그러나 이것은 모든 요구 사항에 적용되지 않을 수 있습니다. 따라서 문제를 피하는 더 나은 경험 법칙은 Excel의 반올림에 의존하지 않는 것입니다. 다음 공식과 같이 명시 적 반올림을 구현하여이를 수행합니다.

=INT(0.28100)-INT(0.28100)=0 =ROUND(0.28100,0)-INT(0.28100)=0 =ROUND(0.28100,5)-ROUND(0.28100,5)=0

이러한 경우 0과 같은 특정 값과 비교할 때 예상치 못한 결과가 발생할 수 있으므로 Excel에서 전체 정밀도로 계산을 수행 할 수 없습니다.

대신 Excel에서 값 (작업중인 모든 값)을 비교에 필요한 정밀도 수준으로 반올림하도록합니다.

또 다른 방법은 0과 같은 정확한 값과 비교하지 않는 것입니다. 대신, 반올림 문제를 허용하는 비교에서 약간의 “퍼지 요인”을 허용하십시오. 예를 들어, 당신이 가정하는 단위의 100 분의 1에 대한 비교가 정확한 경우에만 관심이 있다고 결정할 수 있습니다. 이 경우 원래 공식은 다음과 같이 수정 될 수 있습니다.

=0.28100-INT(0.28100)<0.01

예상대로 True를 반환합니다.

_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.

이 팁 (8145)은 Office 365의 Microsoft Excel 2007, 2010, 2013, 2016, 2019 및 Excel에 적용됩니다. 여기에서 Excel의 이전 메뉴 인터페이스에 대한이 팁 버전을 찾을 수 있습니다.

link : / excel-Avoiding_Rounding_Errors_in_Formula_Results [수식 결과에서 반올림 오류 방지].