C 中關於輸出精度與取整函式的問題

2021-08-10 04:29:28 字數 3906 閱讀 3826

1.使用控制符控制輸出格式

控制符作用

dec設定整數的基數為10

hex設定整數的基數為16

oct設定 整數的基數為8

setbase(n)

設定整數的基數為n(n只能是16,10,8之一)

setfill(c)

設定填充字元c,c可以是字元常量或字元變數

setprecision(n)

setprecision(n)設定實數的精確度為n位。

在以十進位制小數形式輸出時,n代表有效數字位數。

在以fixed(固定小數字數)形式和scientific(指數)形式輸出時,n為小數字數。

setw(n)

設定字段寬度為n位。

setiosflags(ios::fixed)

設定浮點數以固定的小數字數顯示。

setiosflags(ios::scientific)

設定浮點數以科學計數法(即指數形式)顯示。

setiosflags(ios::left)

輸出資料左對齊。

setiosflags(ios::right)

輸出資料右對齊。

setiosflags(ios::shipws)

忽略前導的空格。

setiosflags(ios::uppercase)

在以科學計數法輸出e和十六進製制輸出字母x時,以大寫表示。

setiosflags(ios::showpos)

輸出正數時,給出「+」號。

resetiosflags

終止已設定的輸出格式狀態,在括號中應指定內容。

2.用流物件的 成員控制輸出格式

流成員函式

與之作用相同的控制符

作用precision(n)

setprecision(n)

設定實數的精度為n位。

width(n)

setw(n)

設定字段寬度為n位。

fill(c)

setfill(c)

設定填充字元c。

setf( )

setiosflags( )

設定輸出格式狀態,括號中應給出格式狀態,內容與控制符setiosflags括號中內容相同。

ubsetf( )

resetiosflags( )

終止已設定的輸出格式狀態。

cout.width(10); cout.setf(ios::hex);

3.設定格式狀態的格式標誌

格式標誌

作用ios::left

輸出資料在本域寬範 圍內左對齊

ios::right

輸出資料在本域寬範圍內右對齊

ios::internal

數值的符號位在域寬內左對齊,數值右對齊,中間由填充字元填充

ios::dec

設定整數的基數為10

ios::oct

設定整數的基數為8

ios::hex

設定整數的基數為16

ios::showbase

強制輸出整數的基數(八進位制以0打頭,十六進製制以0x打頭)

ios::showpoint

強制輸出浮點數的小點和尾數0

ios::uppercase

在以科學計數法輸出e和十六進製制輸出字母x時,以大寫表示

ios::showpos

輸出正數時,給出「+」號。

ios::scientific

設定浮點數以科學計數法(即指數形式)顯示

ios::fixed

設定浮點數以固定的小數字數顯示

ios::unitbuf

每次輸出後重新整理所有流

ios::stdio

每次輸出後清除 stdout,stderr

setw(int _w)講解

setw(int _w) << 輸出位寬 如<< setw(7) << 1000 輸出結果為 "1000 "(緊跟三個空格) 而如<< setw(3) << 1000 位寬小於原來的數字的位寬 那麼按照原來的格式輸出"1000" 前後無空格

setfill() 講解

setfill(int _m) 隨setw(int _w)一起使用 意思是在set(int _w)設定後的空格填充指定的字元 注意setfill裡邊的引數是int _m 是個整數.所以,如果我們要用空格來填充*號的時候 要使用setfill('*')[字元] 而不是setfill(*)

(1)setw(int n) 預設輸出寬度

如:cout《輸出結果為「 123」,在123的前面會有3個空格,123右對齊。

(2)setfill(char c) 預設填充字元

如:cout《輸出顯示結果為「###123」,123右對齊,在前面填充3個』#』 。

(3)setbase(int n) 預設整數輸出進製

如:cout《輸出顯示結果為377

(4)setprecision(int n) 用於控制輸出流顯示浮點數的精度,整數n代表顯示的浮點數數字的個數。示例程式如下:

#include

#include //格式控制

using namespace std;

int main()

第1行輸出數值之前沒有設定有效位數,所以用流的有效位數預設設定值6

第2個輸出設定了有效位數0,c++最小的有效位數為1,所以作為有效位數設定為1來看待

第3~6行輸出按設定的有效位數輸出。

第7行輸出是與setiosflags(ios::fixed)合用。所以setprecision(8)設定的是小數點後面的位數,而非全部數字個數。

第8行輸出用setiosflags(ios::scientific)來表示指數表示的輸出形式。其有效位數沿用上次的設定值8。

在用指數形式輸出時,setprecision(n)表示小數字數。

一、輸出固定位小數 & 固定位整數

#include//標頭檔案

float c = 3.234;

cout設定浮點數以固定的小數字數顯示 

setprecision(2):

是設定浮點數的精度為2位。

二、取整函式:

注意:需要標頭檔案 math

1.ceil(x) 返回大於或等於x的最小整數值(然後轉換為double型)

如:   ceil(10.5) == 11    ceil(-10.5) ==-10

2.floor(x) 返回小於或等於x的最大整數值 

如:  floor(10.5) == 10    floor(-10.5) == -11

3.round(x) 返回x的四捨五入整數值

如:   round(-1.3)=-1;round(-1.52)=-2;round(1.3)=1;round(1.52)=2

相關函式:fabs

標頭檔案:#include

定義函式:double ceil (double x);

函式說明:ceil()會返回不小於引數x 的最小整數值, 結果以double 形態返回.

範例#include

main()

;int i;

for (i = 0; value[i] != 0; i++)

printf("%f=>%f\n", value[i], ceil(value[i]));}執行

4.800000=>5.000000

1.120000=>2.000000

-2.200000=>-2.000000

C 中關於資料小數點,取整的方法

double a 0.123 double b 1.233 double c 0.0125 cout setptecision 3 a b c endl 結果為 0.123 1.23 0.0125 如果需要指定小數點後面的位數,可以使用 setiosflags ios fixed 其標頭檔案為 in...

關於C 中的get與set函式

在程式中經常碰到get set,不甚明白,在網上查詢時也說的迷迷糊糊,所以整理下,以學的明白透徹點。有兩個類person public class person public class person 第乙個型別的name屬性未封裝,其name屬性直接通過public關鍵字暴露給系統中的其他類了,而...

c 中關於char型變數與字串位址的輸出

參考至 在c裡面如果指標是乙個基本數值型 int foalt long等,如果輸出裡有 cout ptr endl 其中ptr是指標的名,則輸出的值是指標的位址,如果是char char指標 則輸出的是char指標的值。在c 中,熟悉int和char型的變數是最基本不過的了,不過,我想,很多初學者會...