Pretypovani promene

Michal Grunt michal.grunt na vynet.cz
Čtvrtek Prosinec 30 01:07:37 CET 2010


Presne. Printf nechce zobrazovat float (double). Na nastaveni linkeru se podivam. Diky za tip.

MG

-----Original Message-----
From: hw-list-bounces na list.hw.cz [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Lukas Burda
Sent: Wednesday, December 29, 2010 11:49 PM
To: HW-news
Subject: Re: Pretypovani promene

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


_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz
Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list


Další informace o konferenci Hw-list