4 回答

TA貢獻1811條經(jīng)驗 獲得超4個贊
使用setprecision(n)可控制輸出流顯示浮點數(shù)的數(shù)字個數(shù)。C++默認的流輸出數(shù)值有效位是6。
如果setprecision(n)與setiosflags(ios::fixed)合用,可以控制小數(shù)點右邊的數(shù)字個數(shù)。setiosflags(ios::fixed)是用定點方式表示實數(shù)。
如果與setiosnags(ios::scientific)合用, 可以控制指數(shù)表示法的小數(shù)位數(shù)。setiosflags(ios::scientific)是用指數(shù)方式表示實數(shù)。
例如,下面的代碼分別用浮點、定點和指數(shù)方式表示一個實數(shù):
//*********************
//** ch2_1.cpp **
//*********************
#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); //重新設(shè)置成原默認設(shè)置
}
運行結(jié)果為:
3.14286
3
3
3.1
3.14
3.143
3.14285714
3.14285714e+00
該程序在32位機器上運行通過。
在用浮點表示的輸出中,setprecision(n)表示有效位數(shù)。
第1行輸出數(shù)值之前沒有設(shè)置有效位數(shù),所以用流的有效位數(shù)默認設(shè)置值6:第2個輸出設(shè)置了有效位數(shù)0,C++最小的有效位數(shù)為1,所以作為有效位數(shù)設(shè)置為1來看待:第3~6行輸出按設(shè)置的有效位數(shù)輸出。
在用定點表示的輸出中,setprecision(n)表示小數(shù)位數(shù)。
第7行輸出是與setiosflags(ios::fixed)合用。所以setprecision(8)設(shè)置的是小數(shù)點后面的位數(shù),而非全部數(shù)字個數(shù)。
在用指數(shù)形式輸出時,setprecision(n)表示小數(shù)位數(shù)。
第8行輸出用setiosflags(ios::scientific)來表示指數(shù)表示的輸出形式。其有效位數(shù)沿用上次的設(shè)置值8

TA貢獻1827條經(jīng)驗 獲得超8個贊
#include<iomanip>
#include<iostream>
using namespace std;
cout<<setprecision(2)<<fixed<<a;
setprecision(2)中的2的意思就是小數(shù)點后面有兩位數(shù)字。

TA貢獻1828條經(jīng)驗 獲得超6個贊
cout<<setprecision(n)<<x
注:n即為顯示的小數(shù)位數(shù)
示例源程序
#include<iomanip.h>
#include<iostream.h>
void main(){
double x=12.3456;
cout<<setprecision(5)<<x<<endl;
}

TA貢獻1829條經(jīng)驗 獲得超6個贊
表示指定小數(shù)點的精度
std::cout << std::setprecision(1);
就是設(shè)置小數(shù)位是1
int main()
{
double d = 0.123;
std::cout << std::setprecision(1) << d << std::endl;
return 0;
}
添加回答
舉報