Stellen abschneiden
-
Hi@all,
wie kann ich bei einem Floatwert einfach die Nachkommastellen bis auf zwei abschneiden. Es soll nicht gerundet werden.
Thx Markus
-
Hallo,
nur in der Ausgabe?#include <iomanip> #include <iostream> using namespace std; int main() { float f = 2.78934f; cout << fixed << setprecision(2) << f << endl; }
Ansonsten fällt mir sponat ein:
float f = 2.78934f; f = int (f*100)/100.0;
Aber das ist bestimmt großer Mist.
-
Vielen Dank erstmal für die schnelle Antwort. Aber das Problem ist folgendes ich muss für ein Schulprojekt ein Programm schreiben welches die Jahresnoten berechnet. Dafür gibt es ein paar vorgaben vom Land BW und ich muss halt intern an manchen Stellen die Nachkommastellen abschneidet und danach mit der neuen Zahl weiter Rechnen. Falls doch noch jemand eine Idee hat bin ich sehr dankbar dafür.
Gruß Markus
-
Original erstellt von HumeSikkins:
**Ansonsten fällt mir sponat ein:float f = 2.78934f; f = int (f*100)/100.0;
**
funktioniert doch!?
-
erfordert aber einen double->int-cast...
-
funktioniert doch!?
Sicher. Für bestimmte Fälle. Ich dachte eigentlich es kommt gleich jemand mit Einsprüchen von wegen gültige Bereiche und so.
Aber das Problem ist folgendes ich muss für ein Schulprojekt ein Programm schreiben welches die Jahresnoten berechnet. Dafür gibt es ein paar vorgaben vom Land BW und ich muss halt intern an manchen Stellen die Nachkommastellen abschneidet und danach mit der neuen Zahl weiter Rechnen.
Dafür sollte der von mir gepostete Code IMO funktionieren. Schließlich halten sich Noten selten in den Grenzbereichen eines floats auf.
-
wenns dennoch um den gültigkeitsbereich geht würde ja ein
float f = 2.78934f; f = floor(f*100)/100;
schonmal helfen.
-
stimmt. floor schneidet bei negativen Werten nicht ab, aber wenns um Schulnoten geht ...
-
Wenn floor im Quelltext auftaucht, kann f*100 plötzlich nicht mehr überlaufen? Oder nur, wenn es um Schulnoten geht?
-
Vielen Dank für die schnellen Antworten, werde das in mein Projekt einbauen und euch dann sagen ob es so funktioniert.
Gruß Markus
-
Habe ich gesagt, dass es dann nicht mehr überlaufen würde? Der bereich von double ist nur größer, als der von int, weshalb es etwas länger dauern dürfte, biss es zum überlauf kommt.
Daniel, kannst du mal aufhören Dinge in meine Texte zu interpretieren, die gar nicht drinstehen.[ Dieser Beitrag wurde am 02.05.2003 um 18:34 Uhr von Helium editiert. ]