Fmod.. divne chovani?? – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Fmod.. divne chovani?? – C / C++ – Fórum – Programujte.comFmod.. divne chovani?? – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
cp.Hook0
Newbie
29. 10. 2008   #1
-
0
-

ve svem programu potrebuji vyuzit funkci fmod... ale pokud do ni zadam prilis velky vstup tak se chova divne, no spis nespravne...

muj kod vypada nejak takhle:



double vstup = 1e22;
double vysledek = fmod(vstup,360);

takhle kod funguje spravne (a pri jakekoliv nizsi hodnote taky), ale jakmile zadam vstup 1e23 a vyssi tak uz to nefunguje tak jak ma.. rucne jsem si vypocital ze pri vstupu 1e23 by melo byt ve vysledku 280, ale je tam 32?? cim je tohle mozne?? nebo da se funkce fmod nahradit necim jinym aby to melo stejny ucinek a fungovalo i pri vyssich vstupech??

Nahlásit jako SPAM
IP: 89.190.63.–
Reklama
Reklama
MaS0
Návštěvník
29. 10. 2008   #2
-
0
-

když ten kód spustim, tak mi to vypíše 280 (, což je podle tebe správně), takže by to asi mohlo být tím že na různejch počítačích jsou datové typy různě velké, ale to mi připadá jako blbost......zkus zjistit DBL_MAX z float.h.....ale nevim, mě to funguje

Nahlásit jako SPAM
IP: 195.146.114.–
cp.Hook0
Newbie
29. 10. 2008   #3
-
0
-

zkousel jsi to se vstupem 1e22 nebo 1e23?? praveze tady se mi to nejak lame, 1e22 funguje 1e23 ne..ketry jsi tam daval vstup?

Nahlásit jako SPAM
IP: 89.190.63.–
MaS0
Návštěvník
29. 10. 2008   #4
-
0
-

pardon blbě jsem to pochopil......taky mi to nefunguje...což je divný, protože jako maximální hodnotu double mám 1e308

Nahlásit jako SPAM
IP: 195.146.114.–
cp.Hook0
Newbie
29. 10. 2008   #5
-
0
-

no prave, taky to nechapu.. vi nekdo?? :smile1:

Nahlásit jako SPAM
IP: 89.190.63.–
MaS0
Návštěvník
29. 10. 2008   #6
-
0
-

nejspíš to teda bude asi tou funkcí (neni stavěná na tak vysoký hodnoty).....

PS:jsem zvědavej jestli někdo bude vědět

Nahlásit jako SPAM
IP: 195.146.114.–
KIIV+42
God of flame
29. 10. 2008   #7
-
0
-

  double vstup = 1e23;

printf("%f", vstup);

vysledek: 99999999999999992000000.000000

Nahlásit jako SPAM
IP: 80.250.27.–
Program vždy dělá to co naprogramujete, ne to co chcete...
cp.Hook0
Newbie
29. 10. 2008   #8
-
0
-

jak je tohle mozne?? nemolo by se to double vlez jeste mnohem vic?? jde nejak udelat aby to vychazelo presne nebo tahle hodnota je uz fyzicka hranice a dal uz nic presne nikdy nebude??

Nahlásit jako SPAM
IP: 89.190.63.–
KIIV+42
God of flame
30. 10. 2008   #9
-
0
-

To cp.Hook : tak ono mas v cisle 3 casti... znamenko, mantisu a exponent... cislo se pak udava jako
sig*(mantisa)^exp a pokud ma mantisa treba 4B tak maximalni cislo bys do nej zvladl nacpat ? neco jako maxint? kdyz by to melo treba 8B tak zase mnohem vic ale ... mozna by to stejne nestacilo

Nahlásit jako SPAM
IP: 80.250.27.–
Program vždy dělá to co naprogramujete, ne to co chcete...
cp.Hook0
Newbie
30. 10. 2008   #10
-
0
-

takze pokud mam program ktery provadi ruzne vypocty a uzivatel zada cislo vetsi jak 1e22 bude vzdy vysledek nepresny? me to nejak nejde furt do hlavy:) muzu tedy napr. nekterym makrem z float.h docilit toho ze max. vstup bude mozny jen do te doby, kdy se jeste bude pocitat presne..?

Nahlásit jako SPAM
IP: 195.146.108.–
Jura
~ Anonymní uživatel
634 příspěvků
30. 10. 2008   #11
-
0
-

No, podle mého nazoru máš celkem smůlu. A žádná úprava v hlavičkovém souboru ti neumožní zvetšit rozsah double. Jinak co se týče přesnosti, tak je, tuším, platných pouze prvních 15 číslic, zbytek je nějaké smetí. Nicmeně to nevím přesně a hledat to nebudu, ale můžeš si to najít ve standardu.

Nahlásit jako SPAM
IP: 85.207.192.–
Tocimanko0
Grafoman
30. 10. 2008   #12
-
0
-

V najhoršom daj long double, ale s takýmito číslami som ešte nepracoval. Momentálne dostávam do krvi syntax samotného jazyka :D

Nahlásit jako SPAM
IP: 195.91.80.–
Freelance copywriter
(web copywriting, sales letters, PR articles)
http://blog.tociman.net
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, 100 hostů

Podobná vlákna

Divné chování if-else — založil d.mostek

Divné chování polí — založil Seph

Divné chování for cyklů — založil Blinder

Pango, gtkmm - divné chování — založil Karel_159

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ý