C++如何用cout控制浮点数输出的位数? C++中如何对输出几位小数进行控制

C++\u5982\u4f55\u7528cout\u63a7\u5236\u6d6e\u70b9\u6570\u8f93\u51fa\u7684\u4f4d\u6570

\u5934\u6587\u4ef6\u91cc #include\u3002
\u51fd\u6570\u91cc\u9762\u52a0\u4e0acout<<setprecision(X)<<endl;
\u4e4b\u540e\u8f93\u51fa\u90fd\u4f1a\u4fdd\u7559X\u4f4d

setprecision \u51fd\u6570
\u529f\u80fd\uff1a\u63a7\u5236\u8f93\u51fa\u6d41\u663e\u793a\u6d6e\u70b9\u6570\u7684\u6570\u5b57\u4e2a\u6570\uff0c\u53ef\u4ee5\u63a7\u5236\u5c0f\u6570\u70b9\u53f3\u9762\u7684\u4f4d\u6570\u5934\u6587\u4ef6\uff1a iomanip
\u4f8b\u7a0b\uff1a
#include #include using namespace std;int main( void ){ const double value = 12.3456789; cout << value << endl; // \u9ed8\u8ba4\u4ee56\u7cbe\u5ea6\uff0c\u6240\u4ee5\u8f93\u51fa\u4e3a 12.3457 cout << setprecision(4) << value << endl; // \u6539\u62104\u7cbe\u5ea6\uff0c\u6240\u4ee5\u8f93\u51fa\u4e3a12.35 cout << setprecision(8) << value << endl; // \u6539\u62108\u7cbe\u5ea6\uff0c\u6240\u4ee5\u8f93\u51fa\u4e3a12.345679 cout << fixed << setprecision(4) << value << endl; // \u52a0\u4e86fixed\u610f\u5473\u7740\u662f\u56fa\u5b9a\u70b9\u65b9\u5f0f\u663e\u793a\uff0c\u6240\u4ee5\u8fd9\u91cc\u7684\u7cbe\u5ea6\u6307\u7684\u662f\u5c0f\u6570\u4f4d\uff0c\u8f93\u51fa\u4e3a12.3457 cout << value << endl; // fixed\u548csetprecision\u7684\u4f5c\u7528\u8fd8\u5728\uff0c\u4f9d\u7136\u663e\u793a12.3457 cout.unsetf( ios::fixed ); // \u53bb\u6389\u4e86fixed\uff0c\u6240\u4ee5\u7cbe\u5ea6\u6062\u590d\u6210\u6574\u4e2a\u6570\u503c\u7684\u6709\u6548\u4f4d\u6570\uff0c\u663e\u793a\u4e3a12.35 cout << value << endl; cout.precision( 6 ); // \u6062\u590d\u6210\u539f\u6765\u7684\u6837\u5b50\uff0c\u8f93\u51fa\u4e3a12.3457 cout << value << endl;}

▲setw(n)用法: 通俗地讲就是预设宽度
如 cout<<setw(5)<<255<<endl;
结果是:
(空格)(空格)255
▲setfill(char c) 用法 : 就是在预设宽度中如果已存在没用完的宽度大小,则用设置的字符c填充
如 cout<<setfill('@')<<setw(5)<<255<<endl;
结果是:
@@255
▲setbase(int n) : 将数字转换为 n 进制.
如 cout<<setbase(8)<<setw(5)<<255<<endl;
cout<<setbase(10)<<setw(5)<<255<<endl;
cout<<setbase(16)<<255<<endl;
结果是:
(空格)(空格)377
(空格)(空格) 255
(空格)(空格) f f
▲ setprecision用法
使用setprecision(n)可控制输出流显示浮点数的数字个数。C++默认的流输出数值有效位是6。
如果setprecision(n)与setiosflags(ios::fixed)合用,可以控制小数点右边的数字个数。setiosflags(ios::fixed)是用定点方式表示实数。
如果与setiosnags(ios::scientific)合用, 可以控制指数表示法的小数位数。setiosflags(ios::scientific)是用指数方式表示实数。
例如,下面的代码分别用浮点、定点和指数方式表示一个实数:
#include <iostream.h>
#include <iomanip.h> //要用到格式控制符
void main()
{
double amount = 22.0/7;
cout <<amount <<endl;
cout <<setprecision(0) <<amount <<endl
<<setprecision(1) <<amount <<endl
<<setprecision(2) <<amount <<endl
<<setprecision(3) <<amount <<endl
<<setprecision(4) <<amount <<endl;
cout <<setiosflags(ios::fixed);
cout <<setprecision(8) <<amount <<endl;
cout <<setiosflags(ios::scientific)
<<amount <<endl;
cout <<setprecision(6); //重新设置成原默认设置
}
运行结果为:
3.14286
3
3
3.1
3.14
3.143
3.14285714
3.14285714e+00
该程序在32位机器上运行通过。
在用浮点表示的输出中,setprecision(n)表示有效位数。
第1行输出数值之前没有设置有效位数,所以用流的有效位数默认设置值6:第2个输出设置了有效位数0,C++最小的有效位数为1,所以作为有效位数设置为1来看待:第3~6行输出按设置的有效位数输出。
在用定点表示的输出中,setprecision(n)表示小数位数。
第7行输出是与setiosflags(ios::fixed)合用。所以setprecision(8)设置的是小数点后面的位数,而非全部数字个数。
在用指数形式输出时,setprecision(n)表示小数位数。
第8行输出用setiosflags(ios::scientific)来表示指数表示的输出形式。其有效位数沿用上次的设置值8
setw(n)是设置域宽。
就是你的输出要占多少个字符
比如:
cout<<setw(5)<<12345<<endl;
就输出
12345
cout<<setw(6)<<12345<<endl;
输出
12345
而如果你要输出的字符宽度超出了setw(n)的n值,就按输出字符的宽度输出。
如你的cout<<setw(4)<<12.3456<<endl;
就输出12.3456

你可以在头文件里 #include。函数里面加上cout<<setprecision(X)<<endl;之后输出都会保留X位即可。希望能帮助到你。

cout<<setiosflags(ios::fixed)<<setiosflags(ios::right)<<setprecision(2);setiosflags 是包含在命名空间iomanip 中的C++ 操作符,该操作符的作用是执行由有参数指定区域内的动作;iso::fixed 是操作符setiosflags 的参数之一,该参数指定的动作是以带小数点的形式表示浮点数,并且在允许的精度范围内尽可能的把数字移向小数点右侧;iso::right 也是setiosflags 的参数,该参数的指定作用是在指定区域内右对齐输出;setprecision 也是包含在命名空间iomanip 中的C++ 操作符,该操作符的作用是设定浮点数;setprecision(2) 的意思就是小数点输出的精度,即是小数点右面的数字的个数为2。cout<<setiosflags(ios::fixed)<<setiosflags(ios::right)<<setprecision(2);合在一起的意思就是,输出一个右对齐的小数点后两位的浮点数。
使用setprecision(n)可控制输出流显示浮点数的数字个数。C++默认的流输出数值有效位是6。
如果setprecision(n)与setiosflags(ios::fixed)合用,可以控制小数点右边的数字个数。setiosflags(ios::fixed)是用定点方式表示实数

  • C璇█涓,杈撳嚭娴偣鏁鏃朵繚鐣欎袱浣嶅皬鏁板簲璇鎬庝箞鎼?
    绛旓細闇瑕佸噯澶囩殑鏉愭枡鍒嗗埆鏈夛細鐢佃剳銆C璇█缂栬瘧鍣ㄣ1銆侀鍏堬紝鎵撳紑C璇█缂栬瘧鍣紝鏂板缓涓涓垵濮.cpp鏂囦欢锛屼緥濡傦細test.cpp銆2銆佸湪test.cpp鏂囦欢涓紝杈撳叆C璇█浠g爜锛歱rintf("%.2f", 3.1415);銆3銆佺紪璇戝櫒杩愯test.cpp鏂囦欢锛屾鏃舵垚鍔熷皢娴偣鏁淇濈暀浜嗗皬鏁扮偣鍚庨潰2浣嶈繘琛屼簡杈撳嚭銆
  • C++杈撳叆闅,寰堝涓嶇煡閬撴剰鎬濄cout<<setiosflags(ios::fixed)<<setiosflags...
    绛旓細cout<<setiosflags(ios::fixed)<<setiosflags(ios::right)<<setprecision(2)锛氳緭鍑轰竴涓彸瀵归綈鐨勫皬鏁扮偣鍚庝袱浣嶇殑娴偣鏁銆俿etprecision(n)锛鎺у埗杈撳嚭娴佹樉绀烘诞鐐规暟鐨勬暟瀛椾釜鏁般俿etiosflags(ios::fixed)锛氱敤瀹氱偣鏂瑰紡琛ㄧず瀹炴暟銆俰so::right 锛氬湪鎸囧畾鍖哄煙鍐呭彸瀵归綈杈撳嚭銆俢out锛氳緭鍑恒
  • 鍏充簬娴偣鏁鍦C璇█涓殑瀛樺偍闂?
    绛旓細缁欎綘娈典唬鐮佷綘鍙互鑷繁璋冭瘯鐜╃帺鍙互甯姪浣犵悊瑙,浣犲彲浠ヤ慨鏀筬l鐨勫垵濮嬪兼煡鐪嬪悇绉娴偣鏁 define PAUSE system("pause")//杩欎釜澶嶅埗鍒颁富鍑芥暟澶栭潰 char c,*p1;char *p;float fl=-3.1415926f;float32 *fp;uint u,e,i;byte b;fp=(float32 *)&fl;cout<<"瑙f瀽娴偣鏁"<<fl<<"鍦ㄥ唴瀛樹腑鐨16杩涘埗缂栫爜"...
  • c++涓鎬庝箞杈撳嚭灏忔暟
    绛旓細濡傛灉setprecision閲岀殑鍙傛暟灏忎簬鏁存暟浣嶆暟锛屽皢浠ユ寚鏁板舰寮忚緭鍑恒備緥濡傦細 float a=123.666锛cout<<setprecision(2)<
  • 璁$畻鏈c璇█,鎬庝箞瀹炵幇娴偣鏁杩涗竴,鏄繖鏍风殑,鐪嬩緥瀛,濡2*0.7*0.8=1.2...
    绛旓細//濡傛灉鏄皬鏁板悗涓や綅杩涜嚦涓浣 include<iostream> include<Windows.h> using namespace std;int main(){ double x;//瑕佽浆鎹㈢殑鏁板瓧 cout<<"杞崲鍓:"锛沜in>>x;int a;a=static_cast<int>(x*100);//鍘绘帀涓変綅鍙婁互鍚 if(a==a/10*10)//0缁撳熬 {x=a/100.0;} else {x=a/10*10/100.0+...
  • 浠g爜閲cout鏄粈涔堟剰鎬?
    绛旓細鍦–++缂栫▼璇█涓紝cout鏄竴涓祦瀵硅薄锛岀敤浜庤緭鍑烘暟鎹埌鎺у埗鍙版垨鏂囦欢涓傚畠鏄疌++鏍囧噯澶存枃浠秈ostream涓殑涓閮ㄥ垎锛屾槸涓涓被浼间簬C璇█涓璸rintf()鐨勮緭鍑哄嚱鏁般浣跨敤cout鍙互灏嗕换浣曠被鍨嬬殑鏁版嵁鎵撳嵃鍒板睆骞曚笂锛屼緥濡傚瓧绗︿覆銆佹暣鏁般娴偣鏁鍜屽瓧绗︾瓑銆俢out鐨勮娉曢潪甯哥畝鍗曪紝鍙渶瑕佺敤<<绗﹀彿灏嗚杈撳嚭鐨勬暟鎹粠鍙宠竟鎷彿涓紶閫掔粰...
  • 娴偣鏁 鍙栦竴瀹氫綅鏁扮殑灏忔暟,姣斿a=1.23456f 鍙栨垚a=1.23f ,C鎴朇++婧愪唬鐮...
    绛旓細cout<<"a: "<<fixed<<setprecision(2)<<a<<endl;a鍙2浣嶅皬鏁帮紱setprecision()鍙栨湁鏁堟暟瀛 fixed瀹氬皬鏁扮偣 娌℃湁fixed缁撴灉涓1.2
  • c璇█缂栫▼浠庨敭鐩樿緭鍏ヤ袱涓娴偣鏁,璁$畻骞跺叾鍜,淇濈暀涓や綅灏忔暟杈撳嚭銆俖鐧惧害鐭 ...
    绛旓細include <stdio.h> int main(void){ float n, n2, n3;printf("璇疯緭鍏ヤ竴涓暟\n");scanf("%f",&n);printf("璇峰啀杈撳叆涓涓暟\n");scanf("%f",&n2);n3=n2+n;printf("杩欎袱涓暟鐨勫拰鏄%.2f",n3);return 0;}
  • c cout鏄粈涔堟剰鎬
    绛旓細cout鏄疌++涓殑鏍囧噯杈撳嚭娴侊紝鐢ㄤ簬灏嗚绠楁満绋嬪簭鐨勮緭鍑烘樉绀哄湪鎺у埗鍙版垨缁堢涓娿浣跨敤cout鍙互寰堝鏄撳湴杈撳嚭鍚勭鏁版嵁绫诲瀷锛屽鏁存暟銆娴偣鏁銆佸瓧绗︺佸瓧绗︿覆绛夈俢out杈撳嚭鏃堕粯璁や娇鐢ㄧ┖鏍煎垎闅旓紝鍙互閫氳繃鐗规畩瀛楃鏉ユ帶鍒惰緭鍑烘牸寮忋俢out鐨勪娇鐢ㄩ潪甯哥畝鍗曪紝鍙渶瑕佸湪绋嬪簭涓寘鍚ご鏂囦欢iostream锛岀劧鍚庝娇鐢╟out瀵硅薄鐨勬祦鎻掑叆鎿嶄綔绗﹁櫧鐒禼out...
  • 浠庨敭鐩樿緭鍏ヤ笁涓娴偣鏁,璁$畻瀹冧滑鐨勫潎鍊煎苟杈撳嚭,C璇█
    绛旓細include "stdio.h"int main(){ float a,b,c,ave;scanf("%f%f%f",&a,&b,&c);ave=(a+b+c)/3;printf("The average is %f.\n",ave);return 0;}
  • 扩展阅读:c入门教程视频 ... c++编程 ... c++教程 ... c++输入输出语句cout ... c++中cout的用法 ... c++怎么输出浮点数 ... using namespace std ... c++和java哪个好就业 ... c++ cout ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网