前一段时间写代码用到这个,网上的方法都太古老了,来上个现代c++风格的,顺便给自己记录一下。
- convertDoubleToString
#include<sstream>
#include<string>
#include<iomanip>
std::string convertDoubleToString(const long double value,const int precision = 0)
{
std::stringstream stream{};
stream<<std::fixed<<std::setprecision(precision)<<value;
return stream.str();
}
使用效果:
#include<sstream>
#include<string>
#include<iomanip>
#include<iostream>
std::string convertDoubleToString(const long double value,const int precision = 0)
{
std::stringstream stream{};
stream<<std::fixed<<std::setprecision(precision)<<value;
return stream.str();
}
int main(int argc, char *argv[])
{
double value = 10.356486;
std::cout<<convertDoubleToString(value,0)<<std::endl;
std::cout<<convertDoubleToString(value,1)<<std::endl;
std::cout<<convertDoubleToString(value,5)<<std::endl;
std::cout<<convertDoubleToString(value,10)<<std::endl;
}
- 解释一下:
setprecision(n):
表示保留n位有效数字,其中最后一位是四舍五入之后的结果
std::fixed
表示固定位数,若去掉该标记则跑起来结果如下:
#include<sstream>
#include<string>
#include<iomanip>
#include<iostream>
std::string convertDoubleToString(const long double value,const int precision = 0)
{
std::stringstream stream{};
stream<<std::setprecision(precision)<<value;
return stream.str();
}
int main(int argc, char *argv[])
{
double value = 10.356486;
std::cout<<convertDoubleToString(value,0)<<std::endl;
std::cout<<convertDoubleToString(value,1)<<std::endl;
std::cout<<convertDoubleToString(value,5)<<std::endl;
std::cout<<convertDoubleToString(value,10)<<std::endl;
}