STD :: SetPrecision不显示尾随的小数

std::setprecision not showing trailing decimals

本文关键字:小数 显示 SetPrecision STD      更新时间:2023-10-16

我试图将双重打印和整数打印为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

有人可以建议我出错了哪里吗?

强制尾随零,使用 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

强制输出始终显示小数点的方法是使用 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]$