Pretypovani promene
Michal Grunt
michal.grunt na vynet.cz
Středa Prosinec 29 21:50:47 CET 2010
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
Další informace o konferenci Hw-list