Pretypovani promene

Ladislav Vaiz spam na nagano.cz
Středa Prosinec 29 22:06:13 CET 2010


Pokud se vam nad tim nechce dumat a mate dost vykonu, tak muzete udelat:
printf("%d.%d MHz", frekvence/1000, (frekvence % 1000) / 100);
Lada

Michal Grunt wrote:
> Ještě doplnim (pokud to z prispevku nebylo jasne), ze pokud mam:
>
> unsigned long frekvence;
>
> frekvence = (unsigned long)((float)twPLL*(float)32.768*(float)0.25-225)
> printf("%lu Khz",frekvence);
>
> Je vse OK, akorat je zobrazovana (na LCD) frekvence v Khz. Ale rad bych, aby se mi frekvence zobrazovala v Mhz...
>
> MG
>
> From: hw-list-bounces na list.hw.cz [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Michal Grunt
> Sent: Wednesday, December 29, 2010 9:43 PM
> To: HW-news
> Subject: Pretypovani promene
>
> 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