2016-12-16 83 views
1

我试图打印double和整数作为double。这样做,我写了下面的程序:std :: setprecision不显示尾随小数

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 

可有人请建议我去哪里错了?

+1

添加'std :: fixed' –

回答

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

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