Stránka 1 z 1

Excel neumí ani opisovat čísla s desetinnou čárkou

Napsal: 02 črc 2020 16:40
od atari
Že Excel neumí správně sčítat číslo s desetinou čárkou jsem si zvykl, nedávno se to tu probíralo.

Ale on nejenom, že neumí počítat desetinná čísla, on je ani neumí opsat !!

Níže uvedený kod mi do buňky B2 zapíše "21,6900005340576" místo 21,69 .

Co s tím? Tu deklaraci tam potřebuji.

(Objednal jsem si za peníze šablonu xml na export účetních dat z Excelu, a výsledky byly chybné, až jsem zjistil, že za to může Excel touto svojí vlastností :mad: .... )

Kód: Vybrat vše

Public cislo As Single

Sub test()
cislo = 21.69
Range("B2") = cislo
End Sub

Re: Excel neumí ani opisovat čísla s desetinnou čárkou  Vyřešeno

Napsal: 02 črc 2020 17:14
od faraon
To bude zrovna jedno z těch čísel s nekonečným desetinným rozvojem, podobně jako 1/10 :huh:

Jestli je v Excelu typ Single čtyřbajtový, jak obvykle bývá, tak má po převodu do desítkové soustavy sedm platných číslic. Na školní výpočty dobré, ale jinak úplně k hovnu. ZX Spectrum počítal přesněji! A Atari BASIC dokonce v BCD stejně jako COBOL, takže tam by tyhle problémy odpadly úplně :lol:

Stalo by se něco, kdybys to nadeklaroval jako Double? Většinou to stačí. M$ QuickBASIC (z roku 1990) znal dokonce datový typ Currency, který sloužil speciálně k finančním výpočtům. Měl pevný počet desetinných míst (mám pocit že čtyři) a nedělal spousty binárních chyb.

P.S. Zkus ho tam dát jako 2169/100, jestli se něco změní.

Re: Excel neumí ani opisovat čísla s desetinnou čárkou

Napsal: 02 črc 2020 17:23
od satik
To není vlastnost Excelu, ale obecne vlastnost nejbeznejsiho formatu desetinnych cisel pouzivaneho na PC, protoze desetinna cisla jsou na PC ulozena ve dvojkovem formatu a jeste v podstate jako nejaka mocnina.

Zkusit vyresit to muzes budto vyse zminovanym deklarovanim jako double (coz muze pomoct za predpokladu, ze ta nepresnost vznika pri prevodu tveho Single na Double, ktery zobrazuje Excel) a nebo muzes vypisovat cislo jen na nekolik desetinnych mist.

Re: Excel neumí ani opisovat čísla s desetinnou čárkou

Napsal: 02 črc 2020 18:19
od atari
2169/100 to jsem zkoušel a nepomohlo.

Ale ta deklarace Double pomohla. Dík za tip.