Forum: Mikrocontroller und Digitale Elektronik int in double umwandeln


von Sadier (Gast)


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

von Rufus Τ. F. (rufus) Benutzerseite


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:
1
radiu = 23;
2
3
Probe = radiu / 10.0;
4
5
printf("probe:%f \r\n", Probe);

von Karl H. (kbuchegg)


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.

von Sadier (Gast)


Lesenswert?

Danke sehr,

hat dieses Mal geklappt..

Gruss
Sadier

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.