In c++ auf die zweite Kommastelle runden?

7 Antworten

Ganz einfach:

Ist x die zu rundende Zahl, druckt man (x+0.5) aus mit nur 2 Dezimalstellen nach dem Komma:

print( "%.2f", x+0.5 );

Teste es, denn es könnte sein, dass vielleicht sogar schon print() korrekt rundet, also nicht nur unerwünsche Dezimalstellen einfach weglässt.

print( "%.2f", x );

std::cout << std::fixed;
std::cout.precision(2);
//std::cout << std::setprecision(2) << std::fixed;
std::cout <<....

Kannst Du als Anhaltspunkt fürs nachschlagen nutzen.

Du kannst die Ausgabe von Werten „manipulieren“:

#include <iomanip>

...

std::cout << "Das Schwimmbad ist zu "
          << "std::setprecision(2)
          << calculation2/calculation1*100
          << % gefüllt";

siehe Doku.

Nutze das:

floor( calc2/calc1 * 100.0 + .5 ) / 10000

EhrenMensch 
Beitragsersteller
 30.09.2021, 00:03

0.0014 Prozent ist aber falsch .

DerEinsiedler  30.09.2021, 00:10
@EhrenMensch

Ja vertippt... muss natürlich so heißen:

floor( calc2/calc1 * 10000.0 + .5 ) / 100.0

Aber das hast du ja längst selber rausgefunden :)

Wenn du einfach nur die Ausgabe runden willst, kannst du (wie andere ja schon geschrieben haben) mit

std::setprecision(2)

den ausgegebenen Text runden.

Wenn du aber mit der gerundeten Zahl weiter rechnen willst, kann ich dir diese Hilfsfunktion empfehlen:

#include <cmath>
float round(float value, int precision)
{
  float multiplier = std::pow(10, precision);
  return (float)((int)(value * multiplier + 0.5f))/multiplier;
}

Beispiel:

http://cpp.sh/6qblth