Cout 如何控制以小數形式的輸出並控制輸出精度
我想輸出一個double類型的數,以小數形式輸出,並且保留4位小數,該怎麼辦啊?
(printf也行)
[解决办法]
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位有效数字
[解决办法]
你的要求太特殊,这个基本上满足你的要求了。。。不管怎么说
#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");}