我正在尝试将double和整数打印为double。为此,我编写了以下程序:
int main()
{
string object="1";
std::stringstream objectString;
objectString << std::setprecision(8) << atof(object.c_str());
cout<<"ObjectString="<<objectString.str()<< " "<<std::setprecision(10) << double(atof(object.c_str())) <<"\n";
}
我希望输出为:
ObjectString=1.0 1.0
但是,我得到的输出为:
ObjectString=1 1
有人可以建议我哪里出错吗?
答案 0 :(得分:5)
要强制尾随零,请使用std::fixed
:
std::string object = "1";
std::stringstream objectString;
objectString << std::fixed << std::setprecision(8) << atof(object.c_str());
std::cout << "ObjectString=" << objectString.str() << " ";
std::cout << std::fixed << std::setprecision(10) << double(atof(object.c_str())) << "\n";
输出:
ObjectString=1.00000000 1.0000000000
答案 1 :(得分:1)
强制输出始终显示小数点的方法是使用std::showpoint
:
#include <iostream>
#include <iomanip>
int main() {
double d = 1.0;
std::cout << std::setprecision(1) << d << '\n';
std::cout << std::setprecision(1) << std::showpoint << d << '\n';
return 0;
}
[temp]$ ./a.out
1
1.
[temp]$