mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik int in double umwandeln


Autor: Sadier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hello Leute,

wie kann ich eine int_Zahl in double umwandeln?
ich habe es mit der Cast_funktion probieret, klappt aber nicht richtig

radiu=23;
Probe = (double)(radiu/10);
printf (("probe:%f \r\n"), Probe);

Ich bekomme
probe:2.000000


was mache ich da falsch?

Ich programmiere in C mit AVR_AtMEGA128..


Danke

Sadier

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du führst eine Integer-Division aus und wandelst erst deren Ergebnis in 
einen double. Wenn Du bei der Division mit einer float-Konstante 
arbeiten würdest, könntest Du auch auf den typecast verzichten:
radiu = 23;

Probe = radiu / 10.0;

printf("probe:%f \r\n", Probe);

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sadier wrote:
> Hello Leute,
>
> wie kann ich eine int_Zahl in double umwandeln?
> ich habe es mit der Cast_funktion probieret,

Ein Cast ist keine Funktion. Ein Cast ist einfach nur ein Cast.

> klappt aber nicht richtig
> Probe = (double)(radiu/10);

Du wandelst das Ergebnis von radiu/10 zu einem double um.
Die Division radiu durch 10 ist aber als Integerdivision
ausgeführt worden, da sowohl radiu als auch 10 integer sind.
Das Ergebnis einer Integerdivision ist aber ein Integer,
dh. keine Nachkommastellen!

Du musst die Division als Gleitkommadivision ausführen lassen.
Das erreichst du, indem du einen der beiden Partner vor
der Division zu einem double machst.

Entweder radiu:

      Probe = ((double)radiu) / 10;

oder die 10:

      Probe = radiu / 10.0;

> was mache ich da falsch?
Dein Fehler: Du versuchst C zu programmieren ohne ein Buch
über C gelesen zu haben.

Autor: Sadier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke sehr,

hat dieses Mal geklappt..

Gruss
Sadier

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.