Chybné sčítání desetinných čísel v Excelu Vyřešeno

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7356
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: Chybné sčítání desetinných čísel v Excelu

Příspěvekod faraon » 04 čer 2020 16:11

Co kdybys to zkusil počítat celočíselně? Prostě všechna ta čísla vynásob stovkou -> posuň desetinnou čárku od dvě místa vpravo, a úplně nakonec výsledek tou stovkou zase vydělíš.

A kdybys sem ten soubor hodil, třeba jen konkrétní kus tabulky s odstraněnými ostatními údaji, tak by nám to s hledáním problému dost pomohlo ;-)

OT: Jinak v Excelu je těch bugů celá řada, jeden pochází dokonce až z roku 1979, uchovávají ho tam prý kvůli "zpětné kompatibilitě" :lol:
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Reklama
Uživatelský avatar
ITCrowd
Tvůrce článků
Guru Level 13.5
Guru Level 13.5
Příspěvky: 23591
Registrován: březen 10
Pohlaví: Muž
Stav:
Offline

Re: Chybné sčítání desetinných čísel v Excelu

Příspěvekod ITCrowd » 04 čer 2020 16:45

dobrej nápad farao :thumbup:
Zkusili jste to vypnout a zapnout? Problémy řeším pouze v tématech. Do SZ mi proto píšete zbytečně.
Základní diagnostika WiFi Jak na diagnostiku sítě Router jako switch Proč je nesmysl chtít router s velkým dosahem Vybíráme router

Zivan
Level 5
Level 5
Příspěvky: 2437
Registrován: leden 10
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Chybné sčítání desetinných čísel v Excelu

Příspěvekod Zivan » 04 čer 2020 18:02

ITCrowd píše:To těžko.
To by se stejná chyba objevovala třeba v linuchu a ve všech programovacích jazycích.


Myslis treba na webu v Javascriptu? :)
https://js.do/code/449950

Nebo v C/C++? (1 by se nemela vytisknout)
https://www.onlinegdb.com/ByARqcL2I
HP Elitebook 845 G8 (Ryzen 5650U, 32GB RAM, WD SN570 1TB, 14" fullHD IPS) + HP USB-C G5 Essential + 29" LG 29UM65 + 22" Eizo S2202W

Uživatelský avatar
ITCrowd
Tvůrce článků
Guru Level 13.5
Guru Level 13.5
Příspěvky: 23591
Registrován: březen 10
Pohlaví: Muž
Stav:
Offline

Re: Chybné sčítání desetinných čísel v Excelu

Příspěvekod ITCrowd » 04 čer 2020 18:16

Myslíš, že klikám na každý odkaz???
Zkusili jste to vypnout a zapnout? Problémy řeším pouze v tématech. Do SZ mi proto píšete zbytečně.
Základní diagnostika WiFi Jak na diagnostiku sítě Router jako switch Proč je nesmysl chtít router s velkým dosahem Vybíráme router

Zivan
Level 5
Level 5
Příspěvky: 2437
Registrován: leden 10
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Chybné sčítání desetinných čísel v Excelu

Příspěvekod Zivan » 04 čer 2020 18:26

OK, tak ja to popisu - jednoduchy priklad, zacne se nulou a dokud je vysledek mensi nez jedna, tak se zobrazi a pricte 0,1. Spravne by se tedy melo zobrazit 0-0,9.

Vysledek editoru Javascriptu:
0
0.1
0.2
0.30000000000000004
0.4
0.5
0.6
0.7
0.7999999999999999
0.8999999999999999
0.9999999999999999

Vysledek editoru C/C++:
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
HP Elitebook 845 G8 (Ryzen 5650U, 32GB RAM, WD SN570 1TB, 14" fullHD IPS) + HP USB-C G5 Essential + 29" LG 29UM65 + 22" Eizo S2202W

Uživatelský avatar
ITCrowd
Tvůrce článků
Guru Level 13.5
Guru Level 13.5
Příspěvky: 23591
Registrován: březen 10
Pohlaví: Muž
Stav:
Offline

Re: Chybné sčítání desetinných čísel v Excelu

Příspěvekod ITCrowd » 04 čer 2020 19:01

java skript na woknech je stejný jako na vbs.
C je ok.
Čili jsi dokázal, že mám pravdu.
Zkusili jste to vypnout a zapnout? Problémy řeším pouze v tématech. Do SZ mi proto píšete zbytečně.
Základní diagnostika WiFi Jak na diagnostiku sítě Router jako switch Proč je nesmysl chtít router s velkým dosahem Vybíráme router

Zivan
Level 5
Level 5
Příspěvky: 2437
Registrován: leden 10
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Chybné sčítání desetinných čísel v Excelu

Příspěvekod Zivan » 04 čer 2020 19:20

C taky neni OK, to by tu 1 nevytisknul. Interne bude mit opet neco jako 0,9999999999 (a proto cyklus projde jeste jednou a vytiskne tu zaokrouhlenou 1), ale na vystup to zaokrouhli na 1
HP Elitebook 845 G8 (Ryzen 5650U, 32GB RAM, WD SN570 1TB, 14" fullHD IPS) + HP USB-C G5 Essential + 29" LG 29UM65 + 22" Eizo S2202W

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7356
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: Chybné sčítání desetinných čísel v Excelu

Příspěvekod faraon » 04 čer 2020 21:16

Zivan píše:... tak se zobrazi a pricte 0,1. Spravne by se tedy melo zobrazit 0-0,9.

Ne, nemělo. Uvědom si, že počítač počítá ve dvojkové soustavě, a v ní je dělení deseti značně netriviální záležitost, podobně jako bys v té desítkové ručně na papíře dělil třeba sedmnácti.

Na rozdíl od desítkové je totiž binární 1/10 číslo s nekonečným desetinným rozvojem, podobně jako třeba Pí, ale počítač počítá jenom s konečnou přesností. Pročež jsem už od konce osmdesátých let v každé dobré učebnici programování (tehdy v BASICu) četl, že desetinné číslo se v cyklu přičítat nesmí! A ze stejného důvodu se desetinná čísla také nedají porovnávat pomocí =.

Takže takhle to bude nesprávně v Céčku:

Kód: Vybrat vše

    n=0;
    while (n<1)
          {
          n+=.1;
          printf("%.16f\n",n);
          }

A zcela chybný výsledek vypsaný s vyšší přesností:

Kód: Vybrat vše

0.1000000000000000
0.2000000000000000
0.3000000000000000
0.4000000000000000
0.4999999999999999
0.6000000000000000
0.7000000000000000
0.7999999999999999
0.8999999999999999
0.9999999999999999
1.0999999999999999


Zatímco správný způsob by byl:

Kód: Vybrat vše

    n=0;
    while (n<10)
          {
          n+=1;
          printf("%.16f\n",n/10);
          }

S očekávaným výsledkem:

Kód: Vybrat vše

0.1000000000000000
0.2000000000000000
0.3000000000000000
0.4000000000000000
0.5000000000000000
0.6000000000000000
0.7000000000000000
0.8000000000000000
0.9000000000000000
1.0000000000000000


Příčinu zjistíš takhle:

Kód: Vybrat vše

    printf("\n%.17f\n",.1);

:shock: :shock: :shock: :shock: :shock:

Kód: Vybrat vše

0.10000000000000001


Všechny ty výsledky jsou samozřejmě pouze přibližné, protože převodem z dvojkové do desetinné soustavy dochází k dalším odchylkám. Jediný způsob jak se tomu vyhnout je použít jazyk COBOL, určený pro bankovní operace, který počítá desítkově a všechna čísla ukládá v kódu BCD. Ale věř mi že to nechceš, programátoři v COBOLu jsou sice už přes šedesát let placení nejlépe ze všech, ale jsou to krvavě vydřené peníze :lol:
Naposledy upravil(a) faraon dne 04 čer 2020 21:23, celkem upraveno 1 x.
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

karlos64
nováček
Příspěvky: 35
Registrován: červenec 18
Pohlaví: Muž
Stav:
Offline

Re: Chybné sčítání desetinných čísel v Excelu

Příspěvekod karlos64 » 04 čer 2020 21:22

Zkoušel jsi možnost "přesnost výpočtu podle zobrazení"?
Soubor-Možnosti-Upřesnit-Při výpočtech v tomto sešitu-zaškrtnout volbu "Nastavovat přesnost podle zobrazení" (Excel 2016)

Zivan
Level 5
Level 5
Příspěvky: 2437
Registrován: leden 10
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Chybné sčítání desetinných čísel v Excelu

Příspěvekod Zivan » 05 čer 2020 07:22

faraon:
Fakt si myslis, ze udelam jednoduchy priklad pro ukazku chyby, tak mi musis vysvetlovat, co je na nem spatne? :)
HP Elitebook 845 G8 (Ryzen 5650U, 32GB RAM, WD SN570 1TB, 14" fullHD IPS) + HP USB-C G5 Essential + 29" LG 29UM65 + 22" Eizo S2202W

Uživatelský avatar
Funstorm007
Level 5
Level 5
Příspěvky: 2015
Registrován: říjen 08
Pohlaví: Muž
Stav:
Offline

Re: Chybné sčítání desetinných čísel v Excelu

Příspěvekod Funstorm007 » 05 čer 2020 14:20

Tak jsem vykousnul část tabulky aby bylo vidět jak původní číslo (sloupec C), které se v originále tahá z jiného listu ale vyjde to nastejno, tak přepočet na záporné/kladné (Sloupec D) podle hodnot ve sloupci B. No a výsledek v kontingenčce je vidět vedle...

http://leteckaposta.cz/899457599

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7356
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: Chybné sčítání desetinných čísel v Excelu

Příspěvekod faraon » 05 čer 2020 16:55

Nešlo by to třeba přes Uložto? Letecká pošta se se mnou už delší čas nebaví, zřejmě proto že mám zablokované příliš agresivní reklamní servery ;-)
Nebo rovnou tady do SZ, těch dvacet kilobajtů se mi tam snad vejde.
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Import PDF do excelu Příloha(y)
    od luko02420 » 13 kvě 2023 11:29 » v Kancelářské balíky
    18
    3252
    od luko02420 Zobrazit poslední příspěvek
    16 kvě 2023 11:27
  • Poškozený soubor excelu Příloha(y)
    od Jsimi » 06 úno 2024 22:43 » v Kancelářské balíky
    0
    612
    od Jsimi Zobrazit poslední příspěvek
    06 úno 2024 22:43
  • Promítaní excelu a videa zároveň
    od Marw7_ » 02 čer 2023 15:57 » v Vše ostatní (sw)
    2
    1285
    od X Zobrazit poslední příspěvek
    02 čer 2023 18:06
  • Tisk z excelu mění výšky buněk
    od Moonddur » 28 dub 2023 11:50 » v Kancelářské balíky
    1
    1653
    od atari Zobrazit poslední příspěvek
    28 dub 2023 12:08
  • Jak do Excelu dostat aktuální hodnotu z webové stránky? Příloha(y)
    od Peťa » 10 lis 2023 09:41 » v Kancelářské balíky
    2
    1678
    od Peťa Zobrazit poslední příspěvek
    10 lis 2023 16:24

Zpět na “Kancelářské balíky”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 7 hostů