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...
Fórum › C / C++
Problem pri explicitnej typovej konverzii resp. WTF?
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.
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;
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žení videa
Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
Uživatelé prohlížející si toto vlákno
Uživatelé on-line: 0 registrovaných, 6 hostů
Podobná vlákna
Squeak/Smalltalk - wtf? — založil Garret Raziel
SDL+PhP? wtf? — založil Martin
Vyhladavanie resp.filtrovanie udajov — založil 79kiko
Kniha o C# 3.0, resp. Visual Studio 2008 v CZ — založil Anonymní uživatel
Projení formulářů, resp.načtení dat z jednoho do druhého — založil tomas
Moderátoři diskuze