Forum: PC-Programmierung [C] Anfänger - Typkonvertierung double zu int


von CAnfänger (Gast)


Lesenswert?

Guten Tag,

ich fange gerade mit dem C lernen an.
Dabei habe ich ein Problem bei der Konvertierung eines Double-Typen in 
einen Integer-Typen.

Wenn ich es mit C++ schreibe, funktioniert mein Programm problemlos, 
wenn ich es aber in C schreibe, ist die Ausgabe fehlerhaft.

Hier mein Code:
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  double gkzahl;
  int gkzahlint;


  printf("Bitte geb eine Gleitkommazahl ein!");
  scanf("%f", &gkzahl);

  gkzahlint= (int)gkzahl;

  printf("\n\n\n%f konvertiert in einen Integer sieht so aus: %d\n\n\n", 
gkzahl, gkzahlint);

  system("PAUSE");
  return 0;
}

Als Ergebnis wird immer 2000592436 ausgegeben.
Kann mir jemand erklären, warum das so ist?

von Rolf Magnus (Gast)


Lesenswert?

CAnfänger schrieb:
>   scanf("%f", &gkzahl);

Probier hier mal %lf.

von DirkB (Gast)


Lesenswert?

Mach aus gkzahl ein float oder bei scanf ein %lf

von Timmo H. (masterfx)


Lesenswert?

Zumindest bei Scanf solltest du %lf verwenden anstatt %f.

von CAnfänger (Gast)


Lesenswert?

Danke sehr,

"%f" zu "%lf" geändert und schon klappt es. :)

MfG

von Vlad T. (vlad_tepesch)


Lesenswert?

wobei man bei einem einfachen Abschneiden der Nachkommastellen fast 
schon nicht von Konvertierung sprechen kann

von Tobi (Gast)


Lesenswert?

Vlad Tepesch schrieb:
> wobei man bei einem einfachen Abschneiden der Nachkommastellen fast
> schon nicht von Konvertierung sprechen kann

Was soll es denn sonst sein? Die interne Darstellung wird an dieser 
Stelle ja schon konvertiert. Es fehlt lediglich das Runden, falls das 
überhaupt erwünscht ist.

von Karl H. (kbuchegg)


Lesenswert?

Tobi schrieb:
> Vlad Tepesch schrieb:
>> wobei man bei einem einfachen Abschneiden der Nachkommastellen fast
>> schon nicht von Konvertierung sprechen kann
>
> Was soll es denn sonst sein? Die interne Darstellung wird an dieser
> Stelle ja schon konvertiert. Es fehlt lediglich das Runden, falls das
> überhaupt erwünscht ist.

Meistens ist es erwünscht.

29.999999   ist nun mal praktisch gesehen 30 und nicht 29

von Markus G. (Gast)


Lesenswert?

>Karl Heinz Buchegger schrieb:

> Meistens ist es erwünscht.
> 29.999999 ist nun mal praktisch gesehen 30 und nicht 29

Meistens schon, aber nicht immer. Es gab vor Jahren mal eine lustige 
Printwerbung für einen µC. Zur Verdeutlichung seiner 
Gleitkommagenauigkeit war eine im Bau befindliche Brücke abgebildet. 
Wenn man genau hingeschaut hat, konnte man erkennen, daß sich die 
Fahrbahnhälften in der Mitte nicht treffen werden :-)

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.