Pretypovani promene

Lukas Burda burdal1 na post.cz
Středa Prosinec 29 23:49:29 CET 2010


Popravde si nejsem jisty, co vlastne mate za problem. Pochopil jsem
spravne, ze vypocet ve floatech funguje, ale problem je, ze vypisovani
intu vam funguje a vypis float (a double) ne? Zakladni otazka -
nastavil jste linker ze ma linkovat float verze printf funkce?

Lukas Burda



Wednesday, December 29, 2010, 9:42:53 PM, you wrote:

> Zdravim,
> Potreboval bych poradit ohledne pretypovani promene. Zkousel jsem
> vsechno mozne, ale nedari se (WinAVR, atmega32).
>  
> Mam nasledujici vzorec, kde vysledek je ve tvaru unsigned long:
>  
> (unsigned long)((float)twPLL*(float)32.768*(float)0.25-225)
>  
> To je v poradku, vrati se mi cislo 87500-108000 (radiova FM frekvence v Khz).
>  
> Ale potrebuji z toho udelat “Mhz”, tedy deleno 1000 a toto koreknte vypsat. Tedy
>  
> printf("%.1f Mhz",frekvence); 
>  
> Pricemz frekvence je deklarovana:
>  
> double frekvence;
>  
> Ze zoufalosti uz jsem zkousel jsem ruzne pokusy, ale bud se mi ukaze nesmyslny udaj nebo nic...
>  
> frekvence=(double)((unsigned
> long)((float)twPLL*(float)32.768*(float)0.25-225))/1000);
> frekvence=(double)((unsigned
> long)((float)twPLL*(float)32.768*(float)0.25-225))/(double)1000);
> frekvence=(double)((unsigned
> long)((float)twPLL*(float)32.768*(float)0.25-225))/(double)1000.0);
>  
> Jak na to?
>  
> Diky
> Michal Grunt




Další informace o konferenci Hw-list