解决std::to_string(long double _Val)函数当浮点数的精度大于等于小数点后六位时,返回的字符串结果为”科学计数法”的形式,并且去掉末尾无效的'0'
代码如下
#include <iostream>
#include <iomanip>
#include <sstream>
int main()
{
double d = 1657534798.0000000;
std::stringstream stream;
stream << std::fixed << std::setprecision(std::numeric_limits<double>::digits10 + 1) << d;
std::string result = stream.str();
// 删除末尾的0
result.erase(result.find_last_not_of('0') + 1, std::string::npos);
if (result[result.length() - 1] == '.') {
result.erase(result.length() - 1, 1);
}
std::cout << result;
}
运行结果
1657534798