Šta je novo?

Bug u Excelu?

kUdtiHaEX

Super ridža
Administrator
Učlanjen(a)
18.07.2001
Poruke
18,171
Poena
1,445
Moja oprema  
CPU & Cooler
Intel® Core™ i5-9500F, NZXT Kraken Z63
GPU
Asus GTX 2070 Super
Storage
Samsung 980 Pro NVMe 1 TB
Kućište
NZXT H210i
Monitor
LG C2 42"
Miš & tastatura
Logitech G502, Keychron K8, Nuphy Air75, Ducky TKL One 2
Ostale periferije
Glupi HP štampač
Laptop
Apple Macbook Pro 14" M1
Tablet
Apple iPad Pro 11"
Mobilni telefon
Apple iPhone 13 Pro Max
Pametni uređaji
Apple Watch Ultra
Pristup internetu
  1. Kablovski internet
Probajte da saberete sledece brojeve:
55 550 000 000 000 000 i 110, polje koje je rezultat je NUMBER tipa bez decimala. Dobicete 55 550 000 000 000 100, a gde nestade onih 10? ;-)
 
kUdtiHaEX je napisao(la):
Probajte da saberete sledece brojeve:
55 550 000 000 000 000 i 110, polje koje je rezultat je NUMBER tipa bez decimala. Dobicete 55 550 000 000 000 100, a gde nestade onih 10? ;-)
Excel računa sa 15 značajnih cifara tako da to nije nikakv bag.
 
zormanic je napisao(la):
Nije da branim m$, ali double tip podataka je toliki. A i kome treba više?
 
jddipqd je napisao(la):
...Excel računa sa 15 značajnih cifara tako da to nije nikakv bag.
A sa koliko cifara računa kad ga pitam da li je 17.8+0.1-17.9=0? Unesi u ćeliju: =17.8+0.1-17.9=0 (po potrebi promeni decimanlni separator)
Imam još izvala: koliko je 10.4+1080-1074-16.4
Najveći fazon je što sam ih upravo danas pronašao (sa excelom se družim poslednjih >10 godina) - testirao sam ispravnost nekih podataka i verovatno bih uvenuo tražeći gde grešim da nije ovog treda pa sam posumljao u Excel. Ako je ipak do mene, razuverite me.
 
10.4+1080-1074-16.4 je jednako 0 ako polje formatiras kao number a ne kao general.
A sa koliko cifara računa kad ga pitam da li je 17.8+0.1-17.9=0? Unesi u ćeliju: =17.8+0.1-17.9=0 (po potrebi promeni decimanlni separator)
[code:1]=17.8+0.1-17.9=0[/code:1] izbacuje FALSE
dok
[code:1]=17.8-0.1-17.7=0[/code:1] izbacuje TRUE

Pravo da ti kazem nikad mi nije ni palo na pamet da uradim ovako nesto a i ne vidim svrhu. Sigurno je da EXCEL ima problema sa ovim izrazima.
 
Svrha itekako postoji: ovo mi se desilo jer sam podatke imao u ćelijama pa sam tražio da li su realni (da li je početno stanje + nabavka - prodaja = krajnje stanje) i izgražavao se.
Nisam čitao EULA-u, možda bi sad mogao da tužim MS što sam Agenciji za duvan priložio pogrešne podatke pa će firma u kojoj radim možda da izgubi veliki posao, ili što sam kao zaposleni doživeo emotivni šok strahujući za svoj posao i sl. Probao sam Excel 97, 2000, XP i 2003 - Svi greše.
 
VIA je napisao(la):
...

A sa koliko cifara računa kad ga pitam da li je 17.8+0.1-17.9=0? Unesi u ćeliju: =17.8+0.1-17.9=0 (po potrebi promeni decimanlni separator)
Imam još izvala: koliko je 10.4+1080-1074-16.4
Najveći fazon je što sam ih upravo danas pronašao (sa excelom se družim poslednjih >10 godina) - testirao sam ispravnost nekih podataka i verovatno bih uvenuo tražeći gde grešim da nije ovog treda pa sam posumljao u Excel. Ako je ipak do mene, razuverite me.
Ovo već nije 'feature' 🙂 već bag... i to prilično ozbiljan.
Ako staviš pogled sa recimo 20 decimalnih mesta (drugi primer) videćeš da je do 14tog (odnosno 15te značajne cifre tačno a preko toga ide đubre)
Trebalo bi da bude garantovano da su sve neznačajne cifre nula.
Za prvi primer do 30tog mesta (koliko excel može da prikaže) jesu nule ali je pitajbogakoja cifra različita pa daje false.
 
jddipqd je napisao(la):
...


Ovo već nije 'feature' 🙂 već bag... i to prilično ozbiljan.
Ako staviš pogled sa recimo 20 decimalnih mesta (drugi primer) videćeš da je do 14tog (odnosno 15te značajne cifre tačno a preko toga ide đubre)
Trebalo bi da bude garantovano da su sve neznačajne cifre nula.
Za prvi primer do 30tog mesta (koliko excel može da prikaže) jesu nule ali je pitajbogakoja cifra različita pa daje false.

Mislim da čitav mathematics engine MS-a i Offica ne vredi "go-qrc",
O tome je nekada davno bilo reči po novinama. U vreme Win-a 3.11 na običnom njegovom kalkulatoru niste mogli tačno da oduzmete dva broja: 1 - 1.01 davalo je NULU. Mislim da koreni grešaka potiču još iz tih dana.

Nekada davno je u časopisu Galaksija pokojni prof. D.Slavić imao veoma jak serijal o numeričkoj preciznosti kalkulatora programskih jezika i sećam se da su oni ručni (tzv. pocket , iliti "inžinjerski kalkulatori" imali trostruko bolje odrađenu aritmetiku u pokretnom zarezu od ovih stonih računara.

Mislim da je ovo velika sramota da na mašini od 3-4 GHz-a ne možeš tačno da sabereš-oduzmeš tri bliska broja ?!?

Kolko treba i šta treba da se to sredi?
 
Linux ? 🙂
 
VIA je napisao(la):
A sa koliko cifara računa kad ga pitam da li je 17.8+0.1-17.9=0? Unesi u ćeliju: =17.8+0.1-17.9=0 (po potrebi promeni decimanlni separator)
Imam još izvala: koliko je 10.4+1080-1074-16.4
Priručno rešenje dok se M$ ne seti da ovo popravi:
Round(17.8+0.1-17.9;10)=0
i
Round(10.4+1080-1074-16.4;10)

naravno pod pretpostvkom da vam ne treba više od 10 decimala 🙂
 
...i tako smo od skoro bezazlene situacije otkrili poprilican propust u Excelu (toliko faljenom). Ajde neka neko proba OpenOffice.org 1.1 i vidi da li se tamo to desava?
 
kUdtiHaEX je napisao(la):
...i tako smo od skoro bezazlene situacije otkrili poprilican propust u Excelu (toliko faljenom). Ajde neka neko proba OpenOffice.org 1.1 i vidi da li se tamo to desava?

Ima li ko gde da proba Excel 4.0 ??
Važno mi je šta se i kako tamo dešava?
 
Evo probao sam na Amiga Turbo Calc-u i isti slucaj se desava (isto je sa svim 0.8, 0.1 i 0.9 brojevima).

Zanimljivo je da kada se upise 16.8 0.1 i 16.9 u razlicite celije i onda =SUM(A1:C1)=0 dobije se ispravan rezultat dok sve u jednoj celiji daje pogresan....

Na Amigi je u oba slucaja rezultat pogresan a sabiranjem se dobije -3.55E-15

16.7+0.1-16.8 daju tacan rezultat u oba slucaja...
 
Sto volim kada se demantujem 🙂

Nije isto u slucaju 0.8+0.1-0.9=0 - ovo je tacan rezultat 🙂
 
Ma ovo uopšte nema veze sa Excelom. Koji god program da sam probao, a da odrađuje odjednom ove računske operacije (ne kao kalkulator) izbacuje baljezgarije. Čak u VB6 dobijam različite rezultate
Kod:
1 Print (10.4 + 1080 - 1074 - 16.4)
2 Print (10.4 + 1080 - 1074 - 16.4) = (10.4 + 1080 - 1074 - 16.4)
3 Print (10.4 + 1080 - 1074 - 16.4)
za rezultate daje 
1 9.2370555648813E-14 
2 FALSE
3 1.77635683940025E-15
Sve dok prvi put ne naiđe na liniju 2 izbacuje rezultat pod 1, posle toga uvek izbacuje rezultat iz linije 3 i 2 postaje TRUE (dok se ne pokrene ponovo - VB). Ovo sve se dešava u razvoju "programa" dok isompajliran .exe daje uvek rezultat pod 1, (2 je TRUE, mada mi se čini da mi je jednom izbacio rezultat pod 3 ali više ne smem da potpišem). Exe sam probao i na Intelu i na AMDu (XP-u i Me-u) i isto s*nje. Čak sam ga probao na jednoj P1 kantici sa 98-icom. Zaključujem da nije do OS-a, nije do VB biblioteka, nije do CPUa - hardvera uopšte (milanbb je probao i na amigi).
Molio bih nekoga sa instaliranim Cad-om da proba ovaj račun da vidim da li da ikada kupim stan u novijoj zgradi. ;-)
 
E ljudi nasao sam resenje, treba vam addin za excel po imenu xnumb31.zip. Ne mogu da vam ostavim link, ali moze lako na googlu da se nadje, velik je oko 1.2-1.3Mb. Kada otpakujete ovo, samo udjite u excel i idite na tools\add-ins i nadjite gde ste otpakovali i to je to. Ono sto cete dobiti su implementirane funkcije koje mogu da rade sa proizvoljnim brojem decimala, i prepoznaju se lako na spisku funkcija posto sve pocinju sa x. Na primer, funkcija =xe(*) pise broj e sa * decimala.
 
Nazad
Vrh Dno