Sida 1 av 1

Multiplicera i excel 2007

Postat: 26 sep 2007, 00:09
av Mekaniserad Apelsin
Fann den här lilla godbiten: http://groups.google.com/group/microsof ... d5400dfe22

"=40000.223
=41000.348
=52000.723

Such numbers are converted to:

=40000.2229999999
=41000.3479999999
=52000.7229999999"

"

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

"What's even stranger is this:  Suppose the formula is in A1.
=A1+1 returns 100001, which appears to show the formula is in fact 100000
and a very Serious problem.
And if you multiply be say, 2 you get something else:

=A1*2
returns 131070, as if A1 had 65535. (which it should have been)

=A1*1
Keeps it at 100000.

=A1-1 returns 65534

=A1/1 is still 100000
=A1/2 retuns 32767.5

Using MAX() on a range appears not to see 100000.

Very Serious! "

SV: Multiplicera i excel 2007

Postat: 26 sep 2007, 10:03
av per9000
Mekaniserad Apelsin skrev: [...]
"Simply when you try to multiply 850 by 77.1 excel display the result to be
100000 !!! "
[...]
Varken python, octave eller google får det svaret - konstigt att dessa har fel helt oberoende av varandra :D

Kod: Markera allt

>python
[...]
>>> 850*77.1
65534.999999999993
>>> exit()

>octave
[...]
octave:1> 850*77.1
ans =  6.5535e+04
octave:2> exit
http://www.google.se/search?hl=sv&q=850*77.1

/Per

SV: Multiplicera i excel 2007

Postat: 26 sep 2007, 21:52
av Lars
Mekaniserad Apelsin skrev: "=40000.223
=41000.348
=52000.723

Such numbers are converted to:

=40000.2229999999
=41000.3479999999
=52000.7229999999"

"
Sådana här "buggar" brukar påpekas lite då och då, i allt ifrån miniräknare till Excel. Det är helt normalt beteende för flyttal eftersom talen representeras binärt. Talet 40000.223 är exakt lika med 40000 + 2/10 + 2/100 + 3/1000, men endast ungefär lika med 40000 + 1/8 + 1/16 + 1/32 + 1/256 + 1/4096 + 1/16384 ... Försök själv och se hur nära du kommer, men med ett begränsat antal bitar kan man inte alltid få det exakta värdet.

Felet med 850*77.1 måste ju däremot vara ganska pinsamt för Microsoft.

SV: Multiplicera i excel 2007

Postat: 26 sep 2007, 22:33
av Mekaniserad Apelsin
Lars skrev: Sådana här "buggar" brukar påpekas lite då och då, i allt ifrån miniräknare till Excel. Det är helt normalt beteende för flyttal eftersom talen representeras binärt. Talet 40000.223 är exakt lika med 40000 + 2/10 + 2/100 + 3/1000, men endast ungefär lika med 40000 + 1/8 + 1/16 + 1/32 + 1/256 + 1/4096 + 1/16384 ... Försök själv och se hur nära du kommer, men med ett begränsat antal bitar kan man inte alltid få det exakta värdet.
Jag visste att jag förr eller senare skulle bli kallad p den, men det passade så fint in med resten.