[C] Anfänger - Typkonvertierung double zu int

Gast #2212806
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?
#2215950
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
Gast #2216007
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 :-)

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