Unverständliche Ausgabe
-
Schönen guten Tag,
ich hätte eine Frage zu einem (Anfänger)-Programm:
#include<stdio.h>
#include<conio.h>int main(void)
{
double cm;
double meter;printf("\nJetzt koennen Sie Zentimeter in Meter umrechnen. Geben Sie Zentimeter ein: ");
scanf_s("%f", &cm);meter = cm / 100;
printf("%f Zentimeter sind %f Meter", cm, meter);
_getch();
}Wenn ich am Anfang cm und meter mit einem double-Datentyp deklariere, erhalte ich als Ausgabe nur unverständliche Ziffern, wenn ich jedoch zu Beginn "double" durch "float" ersetzte ist die Ausgabe richtig.
Viele Grüße
Johannes
-
Du musst bei
scanf
auch den richtigen Formatspecifier fürdouble
einsetzen.Bei
printf
habendouble
undfloat
allerdings denselben Specifier.
-
scanf_s
ist kein Standard C... es ist irgendeine ErweiterungFür
scanf
unddouble
möchtest du "%lf" benutzen.EDIT: 2s zu langsam
-
Viele dank für die schnellen Antworten. Es funktioniert jetzt so wie ich mir das vorstelle.
Auch wenn ich nicht verstehe was das "l" bei "%lf" für eine Funktion hat.^^Freundliche Grüße
johannes
-
Ein
float
ist eine Gleitkommazahl mit einfacher Genauigkeit.
Derdouble
(wie der Name schon vermuten lässt) ist eine Gleitkommazahl mit doppelter Genauigkeit.Logischer Weise sind die beiden unterschiedlich groß. Daher gibt es (zumindest bei
scanf
) die Unterscheidung zwischen "%f" fürfloat
und "%lf" für "long float
" bzwdouble
.