C++程序 双精度转字符串
在C++程序中,我们常常需要将双精度浮点数转换成字符串。下面我们将介绍C++程序中如何实现将双精度浮点数转换成字符串。
方法一:使用ostringstream
使用ostringstream可以方便地将双精度浮点数转换成字符串。具体方法如下:
#include <iostream>
#include <sstream>
#include <string>
int main() {
double doubleNum = 1234.5678;
std::ostringstream strs;
strs << doubleNum;
std::string str = strs.str();
std::cout << str << std::endl;
return 0;
}
我们通过ostringstream将双精度浮点数doubleNum转换成string类型的str。需要注意的是,在转换之后,我们需要调用ostringstream的str()函数,将转换后的结果取出。上面代码的输出结果为:
1234.57
可以看到,该方法默认的保留小数位数为6。如果需要保留更多小数位数,可以使用setprecision函数,如下代码:
strs << std::setprecision(9) << doubleNum;
方法二:使用sprintf
使用sprintf函数也能将双精度浮点数转换成字符串。具体方法如下:
#include <iostream>
#include <cstdio>
#include <string>
int main() {
double doubleNum = 1234.5678;
char buffer[100];
sprintf(buffer, "%.2lf", doubleNum);
std::string str = buffer;
std::cout << str << std::endl;
return 0;
}
我们通过sprintf将双精度浮点数doubleNum转换成字符数组buffer,然后将buffer转换成string类型的str。上面代码的输出结果为:
1234.57
同样地,该方法默认的保留小数位数为6。如果需要保留更多小数位数,可以在格式化字符串中指定,如下代码:
sprintf(buffer, "%.9lf", doubleNum);
结论
以上介绍了C++程序中如何将双精度浮点数转换成字符串的两种方法。在具体使用时,我们可以选择自己喜欢的方法,在实现双精度浮点数转换成字符串的功能时,一定要注意精度问题。