Double Zahl
-
Hi, vielleicht wisst ihr es: Ich habe eine Funktion geschrieben, an die eine double-Zahl übergeben wird. Diese soll nun den ganzzahligen Teil sowie die Zahl, die aus den ersten 4 Ziffern des nachkommateils besteht, zurückgeben! Wie kann ich sowas realisieren? Muss ich einfach geschickt Multiplizieren bzw. die die Nachkommtateile abschneiden? wie geht das?
#include <stdio.h> #include <math.h> #include <conio.h> double zahl; void function_ziffer(double zahl) { // Ja hier muss die Selektion rein } main(void) { printf("Geben Sie eine Double-Zahl ein: "); scanf("%le",&zahl); function_ziffer(zahl); getch(); return 0; }
-
floor() für Zahl vor dem Komma.
Ergebnis von floor() von Originalzahl abziehen.
Ergebnis mit 10000.0 multipizieren und floor() nochmal anwenden.
-
das geht irgendwie nicht recht, da kommt immer solche lange zahl raus mit vielen 0en und nen e!? muss ich ja noch ne formatierung wie 2.0 oder so schreiben?
-
wovon redest du?
-
von floor() ich weiß nicht wie man das anwendet =((
-
probier mal http://www.pronix.de/pronix-4.html
-
Ich weiß jetzt echt nicht wie ich mir den ganzahligen Teil meiner Double Zahl ausgeben kann und die ersten 4 nackkommastellen??? hab jetzt das hier
#include <stdio.h> #include <conio.h> #include <math.h> double Round(double Zahl, unsigned int Stellen) { Zahl *= pow(10, Stellen); if (Zahl >= 0) floor(Zahl + 0.5); else ceil(Zahl - 0.5); Zahl /= pow(10, Stellen); return Zahl; } int main(void) { double Zahl,rueck; printf("Geben Sie eine Double-Zahl ein: "); scanf("%le",&Zahl); Round(Zahl); printf("%le2.0",Zahl); getch(); return 0; }
Aber das macht auch nicht was es soll!
-
double misthaufen = 2.7182818;
int a, b;printf("%.4f", misthaufen);
a = (int)floor(misthaufen);
b = (int)((misthaufen - a) * 10000);
printf("%d.%04d", a, b);
-
danke klappt wunderbar
-
Bei negativen Zahlen klappt das dann nichtmehr.
Muss man halt überprüfen und entsprechend umbauen.
-
Inwiefern könnte ich das umbauen?
-
vorzeichen erkennen, positiv machen und dann vorzeichen einfach bei der ausgabe davorklatschen.
-
ich habs jetzt so:
gibt aber noch ein problem! wenn ich nur 0 hab wird 0 nur statt 4 stellen ausgegeben! ist das ok? weil 0 ist ja null! da brauch ich doch nicht 0 und 0000!? und wenn ich sowas wie 22,0231 hab ist wegen der 0 auch nur in der ausgabe die 2310! ist irgendiwe doof, hat jemand nen Plan?#include <stdio.h> #include <conio.h> #include <math.h> double zur_berechnung(double zahl) { int a; double b; if (zahl > 0) { a = (int)floor(zahl); b = (int)((zahl - a) * 10000); printf("ganzzahliger Teil: %d\nerste 4 Ziffern des Nachkommateils: %4.0f", a, b); } else { a = (int)trunc(zahl); b = (zahl - a) * (-10000); printf("ganzzahliger Teil: %d\nerste 4 Ziffern des Nachkommateils: %4.0f", a, b); } } int main(void) { double zahl; printf("Geben Sie eine Double-Zahl ein: "); scanf("%le",&zahl); printf("\n"); zur_berechnung(zahl); getch(); return 0; }
-
ich versteh nicht mal was dein satz aussagen sollte...
-
Na wenn ich als Double zahl einlese: 22,023232 zum beispiel, dann hätte ich 22 als ganze zahl ohne nachkommastelle das stimmt. und dann aber nicht 0232 als nachkommastelle sondern nur 232!
-
nullen sind so wichtig wie jede andere ziffer.
du musst also 0232 ausgeben, sonst hast du effektiv eine ganz andere zahl angezeigt.