Gibt es eine direkte Funktion, um die Dezimalzahl der Zahl einzustellen. Zum Beispiel habe ich 3.14341
und mein Parameter ist 2
, so bekomme ich 3.14
. Es gibt eine Funktion setprecision
, aber es druckt nur das Ergebnis. Außerdem habe ich einen Algorithmus wie folgt gemacht:Dezimalzahlen gemäß Parameter
std::string fixPrecision(std::string const& value, int digits)
{
std::string num = value;
float temp = std::stof(num);
float fractpart, intpart;
fractpart = modf(temp, &intpart);
int a = (int)(fractpart * pow(10,digits));
double last = intpart + a*(pow(0.1 , digits));
return std::to_string(last);
}
Es funktioniert gut. Ich bekomme, was ich will, aber ich muss es in eine Zeichenfolge konvertieren, so dass das Ergebnis 123.120000
anstelle von 123.12
ist.
Ich könnte sicher einige Hilfe hier verwenden. Danke im Voraus.
Edit: Es ist keine doppelte Frage, weil meine Funktion Integer und Zahlen mit String-Format zurückgeben muss. Danke noch einmal.
Warum möchten Sie die Zahl intern runden. Normalerweise müssen Sie es nur runden, wenn Sie es anzeigen. Normalerweise ist es nicht nötig, die Präzision loszuwerden. Wenn Sie mit etwas wie Währung arbeiten, sollten Sie Integer/eine Bibliothek mit fester Genauigkeit verwenden. – NathanOliver
Dies ist meine Aufgabe in der Firma und Zahlen sollten mit Strings gesendet werden Danke für die Antwort –
Dies kann mit einem 'std :: stringstream' und Manipulatoren wie' std :: fixed' und 'std :: setprecision' erreicht werden. Sie sollten jedoch in Erwägung ziehen, die Zeichenfolge direkt zu bearbeiten. Die Verwendung eines mittleren "Schwimmers" birgt die Gefahr, dass Ihre Präzision beschädigt wird. –