Nachkomma- und Vorkommastellen bei double Variable
-
Hi!
Ich möchte gerne bei einer double Variable gezielt die Vor- und Nachkommastellen behandeln.
double lz; scanf("%d", &lz);
Gibt es in C eine Möglichkeit sich gezielt mit den Bereichen vor oder nach dem Komma/Punkt zu widmen?
Mein Ziel ist, dass ich z. B. ab x.42 sage x++, und den Nachkomma-Anteil auf Null setze.
Gruß,
rimms
-
meinst du runden mit floor und ceil?
oder formatierte eingabe?
http://www.c-howto.de/tutorial-benutzerinteraktion-tastatureingaben.html#112
-
Hi!
rimms schrieb:
Hi!
Ich möchte gerne bei einer double Variable gezielt die Vor- und Nachkommastellen behandeln.double lz; scanf("%d", &lz);
Double liest man so ein: scanf ( "%lf", &lz );
Die Formatzeichen kannst du hier nachgucken:
// http://www.cplusplus.com/reference/clibrary/cmath/rimms schrieb:
Gibt es in C eine Möglichkeit sich gezielt mit den Bereichen vor oder nach dem Komma/Punkt zu widmen?
Ja, gibt es. Mit modf kannst du dir die Zahl in Vor- und Nachkommateil aufteilen lassen.
http://www.cplusplus.com/reference/clibrary/cmath/modf.htmlrimms schrieb:
Mein Ziel ist, dass ich z. B. ab x.42 sage x++, und den Nachkomma-Anteil auf Null setze.
Gruß,
rimmsDas kannst du mit einem Vergleich machen. Wenn die Zahl größer x.42 ist, kannst du den Nachkommateil mit floor auf 0 setzen.
http://www.cplusplus.com/reference/clibrary/cmath/floor.htmlMachst du so, guckst du hier:
#include <stdio.h> #include <math.h> int Error ( char* e ) { fprintf ( stderr, "%s\n", e ); return 1; } int main () { double num; double fractpart, intpart; if ( 1 != scanf ( "%lf", &num ) ) return Error ( "Eingabefehler."); num = 1.423; fractpart = modf ( num, &intpart ); printf ("%lf = %lf + %lf \n", num, intpart, fractpart); if ( num > 1.42 ) num = floor ( num ); printf ( "%lf\n", num ); return 0; }
Gruß,
B.B.