Double in String konvertieren mit boost::lexical_cast in C++?

Double in String konvertieren mit boost::lexical_cast in C++?


Ich möchte lexical_cast verwenden um einen Float in einen String umzuwandeln. Normalerweise funktioniert es gut, aber ich habe einige Probleme mit Zahlen ohne Dezimalstellen. Wie kann ich die Anzahl der in der Zeichenfolge angezeigten Dezimalstellen korrigieren?


Beispiel:


double n=5;
string number;
number = boost::lexical_cast<string>(n);

Ergebnisnummer ist 5 , ich brauche die Nummer 5.00 .


Antworten:


Aus der Dokumentation für boost lexical_cast:



Beispiel:


#include <sstream>
#include <iomanip>
int main() {
std::ostringstream ss;
double x = 5;
ss << std::fixed << std::setprecision(2);
ss << x;
std::string s = ss.str();
return 0;
}

Einige Code-Antworten


double n=5;
string number;
number = boost::lexical_cast<string>(n);
#include <sstream>
#include <iomanip>
int main() {
std::ostringstream ss;
double x = 5;
ss <<
std::fixed <<
std::setprecision(2);
ss <<
x;
std::string s = ss.str();
return 0;
}
#include <boost/format.hpp>
#include <iostream>
int main() { double x = 5.0;
std::cout <<
boost::str(boost::format("%.2f") % x) <<
'\n';
}
std::string get_formatted_value(double d) {
std::ostringstream oss;
oss.setprecision(3);
oss.setf(std::ostringstream::showpoint);
oss <<
d;
return oss.str();
}
#include <cstdio>
#include <string>
using namespace std;
int main() {
double n = 5.0;
char str_tmp[50];
sprintf(str_tmp, "%.2f", n);
string number(str_tmp);
}