|
|
|
|
La solution C++ c'est de passer par un ostringstream.
#include <iostream>
#include <sstream>
int main(){
double x=1.23456789;
std::string s;
{
std::ostringstream oss;
oss << x;
s = oss.str();
}
std::cout << "x = " << x << " s = " << s << std::endl;
return 0;
}
donne : (mando@aldur) (~) $ g++ -W -Wall plop.cpp (mando@aldur) (~) $ ./a.out x = 1.23457 s = 1.23457 Tu peux éventuellement régler le nombre de décimales qui vont apparaître à priori le nombre de décimales est réglable sur oss http://www.cplusplus.com/reference/iostream/ios_base/precision.html Sinon il reste les traditionnels sprintf du C, qui passent par un buffer. #include <iostream>
extern "C"{
#include <stdio.h>
}
int main(){
double x=1.23456789;
std::string s;
char buffer[100];
sprintf(buffer,"%.9lf",x);
s = buffer;
std::cout << "x = " << x << " s = " << s << std::endl;
return 0;
}
donne à l'éxecution : (mando@aldur) (~) $ g++ -W -Wall plop.cpp (mando@aldur) (~) $ ./a.out x = 1.23457 s = 1.234567890 La vraie question, c'est as-tu besoin de passer par un buffer ou un ostringstream, pour ne pas directement régler la précision de ston std::ostream (ce qui inclue en particulier std::cout, std::cerr, les std::ofstream et les std::ostringstream) Bonne chance |