Forum: Compiler & IDEs Probleme bei Typumwandlung von double zu uint64_t


von Frank H. (gowi)


Lesenswert?

Hallo,
ich möchte in einem AVR das Frequency Tuning Word für einen DDS-IC 
berechnen. Dabei habe ich bei folgendem Code unter avr-gcc 4.2.2 
Probleme:
1
int main () {
2
  double ftw_double;
3
  uint64_t ftw;
4
5
  //calculate frequency tuning word
6
  ftw_double = 86000000. / 300000000. * (1ULL<<48);
7
  ftw = ftw_double;
8
}

Im AVR-Studio wird der Wert für ftw_double als 8.0689492E+013 angezeigt, 
ftw besitzt allerdings den Wert 70368744161280. Kann mir jemand 
erklären, wieso es hier zu so einer großen Abweichung bei der 
Typumwandlung kommt?

von Oliver (Gast)


Lesenswert?

AVR Studio linkt leider nicht per default die mathelib dazu. In den 
Projektoptionen die libm.a hinzufügen, dann gehts.

Oliver

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.