Nejste přihlášen/a.

Přihlásit se do poradny

 

Dvojitá přesnost

Od: elisa24® odpovědí: 11 změna:
avatar elisa24

Dobrý den, co je to prosím dvojitá přesnost? Nějak jinak než že je formát pro hodnoty s plovoucí desetinnou čárkou nebo že je to 64 bitů. Jde mi hlavně o to, jak zapsat hodnotu v dvojité přesnosti? Pro 0,23 je to 0,23D0, ale co když chci zapsat více desetinných míst? Děkuji

 

 

11 odpovědí na otázku
Řazeno dle hodnocení

 

 

hoststary*
hodnocení

2x

Dvojitá přesnost datových typů je dané délkou slova, tedy počtem bitů. Například v článku je uvedený rozsah jednoduché i dvojité přesnosti Long integer

Jednoduchá přesnost s délkou slova 32 bitů

- lze zadat čísla s přesností od -3,402823E 38 - -1,401298E 45 pro záporné hodnoty a od 1,401298E 45 - 3,402823E 38 pro kladné hodnoty.

Dvojitá přesnost s délkou slova 64 bitů

- lze zadat čísla s přesností od -1,79769313486231E 308 - -4,94065645841247E-324 pro záporné hodnoty a od 1,79769313486231E 308 - 4,94065645841247E-324 pro kladné hodnoty.


doplněno 05.10.18 09:37:

Podívejte se na deklaraci proměnných, na datové typy, například int, float, double, long double

Pokud například budeme chtít rozlišovat mezi proměnnou a konstantou, a dát tím najevo, že tato proměnná se nebude měnit (např. PI = 3,14159), provedeme to pomocí klíčového slova const.

const double PI = 3.14159;

Na stránce k úvodu do jazyka c je například, citace:

Předtím než můžeme použít jakoukoli proměnnou, musíme specifikovat její typ čili ji deklarovat. Např.

float xA,yA,p,q,r=5.0,epsilon=1e-6; double dd;
int i,j; short int si; long int li;
char ch=A;

V deklaraci může být proměnná současně inicializována, tj. můžeme jí přiřadit počáteční hodnotu. V uvedeném příkladu jsou inicializovány proměnné r, epsilon a ch.

hodnocení

Děkuji, ale co znamená ten zápis 0,23 jako 0,23D0? Co je to D0? 100?

 

figurek*
hodnocení

2x

Promiňte, já jsem prošel ledasčím, ale s tímto zápisem jsem se ještě nesetkal.

Můžete upřesnit, kde a v jaké aplikaci jste se s takovým požadavkem setkala?

Číslo s jednoduchou přesností se označuje jako Single.

Dim X as Single

Číslo s dvojitou přesností se označuje jako Double.

Dim X as Double

Je to ale takové lehce jalové teoretizování, protože typ Double dovoluje tak obrovská kvanta desetinných míst, s jakými se prostě nepočítá a největší možné Double je tak gigantické číslo, že ničeho na světě není tolik. Ani elementárních částic ne.

Jestli si dobře pamatuji, největší možné číslo typu Double je přibližně 188 a k tomu 320 nul.

hodnocení

Je to v programu, který byl vytvořený ve škole. Asi je to patrné ze zdrojového kodu, ale v tom se nevyznám.

 

hodnocení

2x

64 bitů tj. 8 bajtů. 32 bitové systémy používají 4 bajtové čísla, tzv. integery. Samozřejmě že 64 bitové mají schopnost pojmout více informací, ale záleží to na tom jestli to využiješ. Ty 64 bitové zabírají více místa na disku, v operační paměti a jsou pomalejší (protože se zpracovává dvakrát větší množství infromací). Koukni na číselné rozsahy tady. Bavíme se tedy o Currency či Double 8 byte vs Single 4 byte. Rozdíl mezi celým číslem (např. integer) a číslem s desetinnou čárkou je jen v tom, že se používá k jinému účelu, ale zabere stejné množství paměti.

 

hodnocení

avatar elisa24

Děkuji všem za odpovědi. Když FORTRAN rozeznává jednoduchou přesnost s písmenem E, tj. 500 se zapíše jako 5E2, a dvojitou přesnost, tj. 500 se zapíše jako 5D2, co se stane, když se tam to E nebo D nenapíše?

Není to zapsané v hexadecimálním tvaru?

hodnocení

To ne, to E nebo D je jen 10něco

S tím Déčkem jsem se ještě u exponentu nesetkal.

hoststary*

Déčko v exponentu také neznám, ale strejda gúgl o něm píše například v článku

GNU Fortran používá pro čísla 9 místný formát, a také může používat vědeckou notaci s exponentem deset na n-tou, kde je místo desítky E (což každý zná a mnohý používá), například při zápisu čísla 12.345: kde se dá vyjádřit jako 1.2345E1 nebo .12345E2 nebo .012345E3 nebo 12.345E0 nebo 12345E-3 atd.

Dále je v článku vysvětlené i vyjádřejí s dvojitou přesností s až 17 místným číslem, citace:

" A double precision real number in GNU Fortran can be represented by up to 17 digits before truncation occurs. Double precision numbers are written in scientific notation but with D usurping the role of E. Some various ways of writing the number 12.345 as a double precision real number are

1.2345D1 , .12345D2 , .012345D3 , 12.345D0 , 12345D-3 .

konec citátu. Jestli vám tohle pomůže?

 

 


 

 

 

Přihlásit se k odběru odpovědí z této otázky:

Neneseme odpovědnost za správnost informací a za škodu vzniklou jejich využitím. Jednotlivé odpovědi vyjadřují názory jejich autorů a nemusí se shodovat s názorem provozovatele poradny Poradte.cz.

Používáním poradny vyjadřujete souhlas s personifikovanou reklamou, která pomáhá financovat tento server, děkujeme.

Copyright © 2004-2025 Poradna Poradte.cz. Všechna práva vyhrazena. Prohlášení o ochraně osobních údajů. | [tmavý motiv]