You can see from the first entry (line 9) what is happening.
Entry Display
A9: 4007.634 4007.634
B9: 22.94 22.940
C9: 23 23.000
D9: =0.667*B9+C9*0.333 22.960
E9: =D9 22.960
If you were to format D9 as General, you would see that D9 displays
22.95998, not 22.96. But because you have the display set for 3 decimal
places, XL rounds *the display* to 22.960. The values stored in the cell
doesn't change - it's 22.95998.
If you select E9, you'll see in the Formula bar that the value is
22.95998. Again, your choosing to display with three digits after the
decimal points rounds the *display* to 22.960.
Therefore your calculations in F9:J9, based on your "Enter Value by
Hand" in E9, will have different results if the formula is based on D9,
with its value of 22.95988, or based on F9, with the hand-entered value
22.96.
Note that Excel will carry only 15 decimal digits of precision. It (like
every other spreadsheet) uses internal routines to minimize the error
below that.
There are a couple of ways to avoid or work around this problem.
First, you could choose Tools/Options/Calculation and check the
Precision as displayed checkbox. In that case, the value displayed in
the cell will be used as the value for subsequent calculations based on
that cell. Note that this can introduce errors if you're expecting
symmetric results. For instance, with the display set to three decimal
places:
A1: 1
A2: =A1/3 ==> 0.333
A3: =A1/3 ==> 0.333
A4: =A1/3 ==> 0.333
A5: =SUM(A2:A4) ==> 0.999
so the value in stored in A5 would actually differ from A1 by 0.001.
Second, you could use ROUND() to round to as many significant digits as
you'd like:
A5: =ROUND(SUM(A2:A4),3) ==> 1.000
For more, see
http://cpearson.com/excel/rounding.htm
or
http://www.mcgimpsey.com/excel/pennyoff.html