读书人

Cout 怎么控制以小形式的出控制

发布时间: 2012-04-15 18:39:21 作者: rapoo

Cout 如何控制以小形式的出控制出精度
我想出一double型的,以小形式出,且保留4位小,怎啊?
(printf也行)

[解决办法]

C/C++ code
cout.precision(4);cout.setf(ios_base::fixed,ios_base::floatfield);cout.setf(ios_base::showpoint);
[解决办法]
cout <<setprecision(4) <<amount <<endl;//保留4位小数
[解决办法]
cout <<setprecision(4) <<amount <<endl;//保留4位有效数字
[解决办法]
cout <<setprecision(4) <<amount <<endl;//保留4位有效数字
我这儿可以啊,你的输出的是什么?
[解决办法]
这个估计不好办,
要么是输出四位小数,用这个cout<<setiosflags(ios::fixed)<<setprecision(2) << c <<endl;
要么是输出四位有效数字,用这个cout <<setprecision(4) <<amount <<endl;//保留4位有效数字

[解决办法]
你的要求太特殊,这个基本上满足你的要求了。。。不管怎么说
C/C++ code
#include <sstream> #include <string>#include <iomanip>#include <iostream>using namespace std;void myPrint(double d){    std::stringstream ss1,ss2;    std::string text = "";     ss1<< d;    ss1 >> text;     if(text.find('e')!=string::npos)    {        string s1=text.substr(0,text.find('e'));        string s2=text.substr(text.find('e')+1);        string s3="";        ss2<<s2;        int bit;        ss2>>bit;        cout<<"0.";        for(int i=0;i<-bit-1;i++)            cout<<'0';        if(s1.find('.')!=string::npos)        {            s3=s1.erase(s1.find('.'),s1.find('.'));            s3.erase (s3.begin()+4, s3.end());            cout<<s3<<"\n";                    }        else            cout<<s1<<"\n";    }    else        cout<<text<<"\n";}int main(void) {     double amount = 0.000000000727919;    myPrint(amount);    system("pause");} 

读书人网 >C++

热点推荐