Problem pri explicitnej typovej konverzii resp. WTF? – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Problem pri explicitnej typovej konverzii resp. WTF? – C / C++ – Fórum – Programujte.comProblem pri explicitnej typovej konverzii resp. WTF? – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Payne
~ Anonymní uživatel
37 příspěvků
5. 1. 2008   #1
-
0
-

Zdravim,

napisal som jeden program a fungoval fajn, az pri velkych cislach zacal hadzat zle vysledky, tak si mysim ze daco bude pretekat, tak som zvecsil rozsah z int na long int, ale chyba nebola v tom...

Tak som hodil debug a na co som neprisiel? nechapem preco to tak robi...

Mam kod...

kontrola = (long)pow((double) 10,(double) (3 * i)); pricom kontrola je typu long int

vsetko je pokne, do tretej iteracie, ked by mala mat kontrola hodnotu '1 000 000 000', co ale mat nebude a bude mat len '999 999 999'... Nechapem ale preco, ved je to long int, co ma ovela vecsiu presnost, zeby ale bolo double male? tiez ma ovela vecsiu presnost, tak neviem

Debugovane pod DevC++ a aj MinGW Developer studio a obidva hodilu tu istu hodnotu...

Nahlásit jako SPAM
IP: 87.244.219.–
Reklama
Reklama
mephi0
Expert
5. 1. 2008   #2
-
0
-

tak to je zaujimave, to že to je 9999... vizera na nejaku nepresnosť, možno nato aby sme to pochopili bude treba zájsť trochu nižšie. Možno to je niečo podobne ako 0.1F + 0.1F != 0.2F . Je naozaj nevyhnutné použivať vo funkcii double ?
A ešte taka poznamka, pretypovanim navratovej hodnoty funkcie nezväčšiš rozsah, a tušim int v 32 bitovych systémoch vie zapisať +/- 2mld.

Nahlásit jako SPAM
IP: 85.248.56.–
Program nemusi fungovat rychle, staci ze funguje dostatecne rychle.
Payne
~ Anonymní uživatel
37 příspěvků
5. 1. 2008   #3
-
0
-

Ja praveze vobec nepouzivam double, ale potrebujem umocnovat, co robit cez pow, ktora vracia double...

Nahlásit jako SPAM
IP: 87.244.219.–
AdamHlavatovic0
Stálý člen
5. 1. 2008   #4
-
0
-

ak potrebujes mocnit len cisla zo zakladom 10 tak potom pouzi nieco ako

long long tot = 1;

for (int n=0; n<3*i;++n)
tot *= 10;

Nahlásit jako SPAM
IP: 217.73.16.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 106 hostů

Podobná vlákna

Squeak/Smalltalk - wtf? — založil Garret Raziel

SDL+PhP? wtf? — založil Martin

Kniha o C# 3.0, resp. Visual Studio 2008 v CZ — založil Anonymní uživatel

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý