XL: Comparison of Values Does Not Return Correct Result

ID: Q48606


The information in this article applies to:


SYMPTOMS

In Microsoft Excel, two sums that appear to be equal may return either FALSE when compared (as in an IF statement) or an incorrect value when a calculation is performed based on the two values.


CAUSE

This problem occurs because of the precision of your computer, which must represent and manipulate numbers in binary. Microsoft Excel compares the exact binary representation of the numbers rather than their decimal equivalents, which are displayed on the screen. Therefore, rounding errors can occur in the binary representation of the numbers that are not evident when comparing the decimal values visually.


WORKAROUND

To work around this behavior, use any of the following methods.

Method 1

Have Microsoft Excel compare the displayed values of the numbers, rather than their exact binary value. (Note that this procedure affects only directly comparing values that are displayed on the worksheet; it does not

affect rounding errors that can occur in comparing formulas referring to those values.)

To do this, use the steps appropriate for your version of Microsoft Excel.

Versions 5.0 and Later:

Click Options or Preferences on the Tools menu, and click the Calculation tab. Under Workbook Options, select the Precision As Displayed check box, and then click OK.

Version 4.0:

Click Calculation on the Options menu, and then select the Precision As Displayed check box. Click OK.

Versions 2.2 and 3.0:

Click Calculation on the Options menu, and then select the Precision As Displayed check box. For example, to ensure no rounding errors occur in the formula


   A1: =IF(B1=B2*-25,TRUE,FALSE) 


select the Precision As Displayed check box, and break the formula into two cells as follows:


   A1: =B2*-25       A2: =IF(B1=A1,TRUE,FALSE) 


Method 2

Use the ROUND() function to round the number to the desired number of digits. The following example rounds the two values to the second decimal place:


   A1: =IF(ROUND(B1,2)=ROUND(B2*-25,2),TRUE,FALSE) 


Method 3

Compare the absolute value of the difference between the values to a number smaller than the significant difference. For example, the following formula checks to see that the two values are within .001 of each other (which is insignificant for the numbers used, but greater than a rounding error):


   A1: =IF(ABS(B1-(B2*-25))<.001,TRUE,FALSE) 


MORE INFORMATION

For additional information, please see the following article in the Microsoft Knowledge Base:

Q78113 : XL: Floating-Point Arithmetic May Give Inaccurate Results

Additional query words: 2.2 2.20 3.0 4.00 5.00a 97 98 XL98 XL97 XL7 XL5 XL4 XL3


Keywords          : 
Version           : WINDOWS:2.x,3.x,4.x,5.0,5.0c,7.0,7.0a,97; MACINTOSH:1.x,2.x,3.0,4.0,5.0,5.0a,98
Platform          : MACINTOSH WINDOWS 
Issue type        : kbprb 

Last Reviewed: March 15, 1999