Bug in Excel 2007

J

JE McGimpsey

Um... No.

The number of rows in a .xls file (not a limit, all worksheets have
them) is 65536, not 65535.

It's not particularly arbitrary, either - 65536 is 2^16, or the maximum
integer it's possible to represent in two bytes.

Yes, the number of rows has changed in XL07.
 
E

Erich Neuwirth

=exp(ln(850*77.1)) returns 65535, and exp(ln(A1)) also returns 65535 if
A1 contains =850*77.1

This is a very strong indication that the whole thing is a rendering
issue. There are other major issues with rendering: the Data Table
mechanism sometimes does not display the correct result, but the result
"one step earlier". Just scrolling down and up will change the displayed
value to the the correct result.
 
N

nollaigoc

Excel uses the FPU for INTERMEDIATE calculations, but the final value
of any cell formula gets passed through some, er, MSFT value-added
processing before it becomes the cell's value. This is how
nonparenthesized expressions are implicitly rounded to 15 decimal
digits. Also, and quite unfortunately, some built-in function calls
perform additional and usually unnecessary postprocessing of FPU
results, e.g., MOD(2^30-1,3), which returns #NUM! because MOD can't
handle arguments that produce quotients comfortably within 32-bit
integer or 64-bit double precision bounds even though this is well
within the FPU's capabilities.

I don't think this is the case for 850*77.1. I suspect some bright
spark on the Excel development team decided to rewrite their machine
representation-to-human representation internal number formatting
function, and they screwed it up somehow.

What really concerns me is what Dana DeLouis pointed out: with A1
containing =850*77.1, =A1+1 returns 100001 while =A1-1 returns 65534.
That's VERY, VERY BAD because it implies the value in A1 isn't just
fed directly to the FPU stack. It's subjected to, er, value-added
preprocessing which seems to differ depending on what the precise
operation is. What I'm most worried about, given Dana's other
examples, is whether someone thought they were doing Excel users a
favor by treating increment (+1), decrement (-1), idempotent
operations (+0, *1, ^1), binary left shift (*2) and binary right shift
(/2) as special cases in the formula parser. MSFT *DID* rewrite parts
of the formula parser in XL2007, which is how they lifted the 7 nested
function call limit etc. I'd bet they rewrote too much of it.



Presumably "Render like Excel 2007" will appear soon as a feature
like the leap year in Microsoft 1900 date calculation scheme in Excel.
Microsoft QA program has been subverted by the 6000 page OOXML
specification. There are lots of unique features in that spec also.
Desktop monopoly subverts number system natural monopoly!!
 
E

Ed Hansberry, MS-MVP/Mobile Devices

65535 is also, coincidentally, the rather arbitrary limit on the # of
rows in an xls file
(has this changed with 2007?).

2^16=65536, starting at zero, makes it 65535, or FFFF in hex.
Nothing arbitrary about that number.

And yes, Excel 2007 has 1,048,576 rows, or 2^20, which in hex,
happens to be {drumroll please....} 100,000. :)

--
__________________________________________________________________________________
Ed Hansberry (Please do *NOT* email me. Post here for the benefit of all)
What is on my Pocket PC? http://www.ehansberry.com/
Microsoft MVP - Mobile Devices www.pocketpc.com
What is an MVP? -
 
P

Peo Sjoblom

Presumably "Render like Excel 2007" will appear soon as a feature
like the leap year in Microsoft 1900 date calculation scheme in Excel.
Microsoft QA program has been subverted by the 6000 page OOXML
specification. There are lots of unique features in that spec also.
Desktop monopoly subverts number system natural monopoly!!


I am not disagreeing here however the leap year bug was concocted in Lotus
and Excel
copied it to be compatible. Of course that was when Lotus had a monopoly

--


Regards,


Peo Sjoblom
 
H

Harlan Grove

Peo Sjoblom said:
. . . Of course that was when Lotus had a monopoly

Lotus never had a monopoly. Certainly Lotus Development Corp was never
convicted of having acted as a monopoly, as Microsoft has. 123 never
had the market share Excel now does. SuperCalc, its own Symphony (not
the OOo 1.x clone IBM is now foisting), Framework, Enable, Javelin,
Boeing Calc, Quattro (before Pro), and let's not forget Mosaic Twin
and VP-Planner each had enough market share to be noticed in the
computer press. The last two had enough market share that Lotus sued
them in the look & feel lawsuits, protecting their precious character
mode interface that became effectively worthless about 3 years after
the decision with the debut of Excel 5.
 
J

JE McGimpsey

IIRC, Lotus included the error to be compatible with VisiCalc...

When XL was created (on the Mac, based on Multiplan), the Mac's 1904
system was used which avoided the problem. It was reintroduced when XL
was ported to the PC.
 
P

Peo Sjoblom

Lotus never had a monopoly. Certainly Lotus Development Corp was never
convicted of having acted as a monopoly, as Microsoft has. 123 never
had the market share Excel now does. SuperCalc, its own Symphony (not
the OOo 1.x clone IBM is now foisting), Framework, Enable, Javelin,
Boeing Calc, Quattro (before Pro), and let's not forget Mosaic Twin
and VP-Planner each had enough market share to be noticed in the
computer press. The last two had enough market share that Lotus sued
them in the look & feel lawsuits, protecting their precious character
mode interface that became effectively worthless about 3 years after
the decision with the debut of Excel 5.


Bad wording on my part, maybe I should have used "de facto" monopoly in
windows
or maybe just dominating spreadsheet. I take it back.


--


Regards,


Peo Sjoblom
 
C

cvanbrederode

Simply when you try to multiply 850 by 77.1 excel display the result to be
100000 !!!

I was told by a co-worker that Microsoft already has a fix, but they
have only released it in-house and to a high-level MSDN subscriber
category. I can't find anything on their public website, however.

Chris Van Brederode
 
T

TheJamesGang

try this.....
a1 put in 850
b1:b10 put in 77.0,77.1,77.2,etc
c1 put in =$a$1*b1
fill down c1:c10
select c1:c10 and do a line graph - it is linear

select c1:c10 copy - paste special - graph is linear

type 100000 into c2 and it is not linear
 
H

harnoors

TRY THESE

=5.1*12850
=10.2*6425
=20.4*3212.5
=40.8*1606.25
=77.1*850
=154.2*425
=212.5*308.4
=308.4*212.5
=425*154.2
 
H

hopefully unused

=exp(ln(850*77.1)) returns 65535, and exp(ln(A1)) also returns 65535 if
A1 contains =850*77.1

This is a very strong indication that the whole thing is a rendering
issue. There are other major issues with rendering: the Data Table
mechanism sometimes does not display the correct result, but the result
"one step earlier". Just scrolling down and up will change the displayed
value to the the correct result.

If you read the whole thread before your posting, you will see that
people got it to propagate to other cells, showing that it used the
incorrect value in a further computation. Furthermore, someone
commented on the fact that that demonstration showed it was
potentially more serious.
 
P

purpletravelgrrl

Considering it is budget time we had to be sure about what would
happen if a spreadsheet is shared between Office 2003 and Office
2007. As expected it will display the correct answer in 2003 and the
incorrect answer in 2007. This also proved true with the Office 2007
Compatibility Kit installed and opening a .xlsx in Office 2003.

Just FYI: These tests were run on the same HP PC running both Windows
Vista/Office 2007 and a virtual instance of Windows XP/Office 2003
 
C

cdvallee

This is actually a very old bug in windows. If you type this into MS
Calculator it gives you the same result. I am not exactly sure why
this is but it has existed since Windows 95/98.
 
H

Harlan Grove

JE McGimpsey said:
IIRC, Lotus included the error to be compatible with VisiCalc...
....

VisiCalc doesn't seem to support dates at all, at least the free
download from Dan Bricklin's web site doesn't. I think 'credit' for
the leap year bug goes solely to Mitch Kapor.
 
A

allen.d.guest

Are you saying excel doesn't use the FP processor? How then did the previous
intel floating point bug appear in excel?

Michael

If I remember my old C days, the math.c libraries utilized the FP if
it was present.
 
H

Harlan Grove

(e-mail address removed) wrote...
This is actually a very old bug in windows. If you type this into MS
Calculator it gives you the same result. I am not exactly sure why
this is but it has existed since Windows 95/98.

Using the calculator applet in Windows XP SP-2, 850 * 77.1 returns the
correct result: 65535.
 
L

ljpj707

Simply when you try to multiply 850 by 77.1 excel display the result to be
100000 !!!

Any correlation to the fact that there are only 65536 lines rows
allowed in older versions of Excel? Maybe the bug is in the row
sequencing logic...
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top