我一直试图在没有C ++ 11(ToString)的情况下将double转换为字符串,但它只接受小数位数作为默认值为5。我怎么能改变它?
命令是:
string a = static_cast<ostringstream*>( &(ostringstream()<<digits) )->str();
但它保持5位小数,而我想创建一个包含所有小数的字符串(例如100) 我知道,那么多小数并不重要。这是我正在做的一个练习点。
有什么建议吗?
非常感谢你的时间 干杯!
答案 0 :(得分:5)
在std::cout
上使用IO操纵器setprecision,但适用于stringstream
:
// setprecision example from cplusplus.com
#include <iostream> // std::cout, std::fixed
#include <iomanip> // std::setprecision
int main () {
double f =3.14159;
std::cout << std::fixed << std::setprecision(9) << f << '\n';
return 0;
}
顺便说一句,没有double
会有100个有意义的数字,它是15或17,我忘了究竟有多少。
#include <string>
// ....
std::string f_str = std::to_string(f);
答案 1 :(得分:0)
这最终对我有用
digits = 1.12345123451234;
char buff[100];
sprintf(buff, "%1.14f", digits);
string a(buff);
感谢您在任何情况下检查
干杯