Nur zwei Nachkommastellen bei einer float Zahl
-
Hallo zusammen,
vieleicht kann mir jemand von euch helfen.
Ich habe folgendes Problem:
Ich habe eine Variable die in float deklariert ist.
Nun enthält diese Variable eine Zahl mit vielen Kommastellen. ich brauche aber nur zwei Kommastellen.
Ich habe gesehen es gibt eine Möglichkeit die Kommastellen zubeschränken.sprintf(buf,"%0.2f",Value);
Leider muss die Variable in der die Neue Zahl steht (buf) in char deklariert werden.
Ich brauche aber float als Variablentyp.Kann mir jemand weiterhelfen?
-
Mach es doch folgendermaßen:
float DeineZahl = 19.22423534635; int NochEineZahl = DeineZahl * 100; // = 1922; DeineZahl = NochEineZahl/100; / = 19.22
Das ganze kannst du auch in eine Zeile schreiben:
DeineZahl = (float)((int)(DeineZahl*100))/100;
-
Das Verfahren nennt sich runden...
Siehe Diskussion hir:
http://www.c-plusplus.net/forum/170404?highlight=runden
-
Leider funktioniert das nicht.
Er schreibt:
float DeineZahl = 19.22423534635;
int NochEineZahl = DeineZahl * 100; // = 1922;
DeineZahl = NochEineZahl/100; / = 19.00 Anstatt 19.22Liegt es vielleicht an int?
-
Hallo.
Ändere Deine letzte Zeile zu
DeineZahl = NochEineZahl/100.0;
Gruß
Oli_1977
-
Oli_1977 schrieb:
Hallo.
Ändere Deine letzte Zeile zu
DeineZahl = NochEineZahl/100.0;
Gruß
Oli_1977
Stimmt, das hatte ich nicht bedacht...
Alternativ sollte es eigentlich auch so gehen:
DeineZahl = (float)(NochEineZahl/100);
-
Danke für euere Hilfe es funktioniert.
-
GR-Thunderstorm schrieb:
Alternativ sollte es eigentlich auch so gehen:
DeineZahl = (float)(NochEineZahl/100);Nein, das dürfte das gleiche Ergebnis bringen. Du meinst vermutlich eher sowas:
DeineZahl = (float)NochEineZahl/100;
Einer der Operanden muss Fließkomma sein, dann ist das Ergebnis auch Fließkomma. Da du aber sowieso ein Literal in dem Ausdruck hast, kannst du das auch gleich als float oder double notieren und sparst dir den Cast.
-
double f = 1234.123456789012345; cout.setf(ios::scientific, ios:: floatfield); cout.precision(4); cout<< f << endl; //1.2341e+03 cout.setf(ios::fixed, ios::floatfield); cout.precision(4); cout<< f << endl; //1234.1234
EDIT:
sorry, da wird nicht gerundet. Aber wenn man das cout.setf(ios:: ...........) weg lässt und nur bei cout.precision in der Klammer die Zahl angibt, wird auto. gerundet.
-
Versuch mal bei deiner Ausgabe die 0 vor dem Komma wegzulassen also
printf("%.2f",deinezahl);
damit sollte das klappen.