Probleme bei Typumwandlung von double zu uint64_t

#809989
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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren