C語言有沒有資料的四捨五入?什麼情況下會用到四捨五入?資料型別轉換

2021-08-16 08:41:38 字數 3415 閱讀 2461

1樓:匿名使用者

c語言中的float和double型別資料是浮點數,所以小數部分就存在四捨五入問題,當指定輸出位數在精度範圍之內時,系統會自動舍入,無需人工干預,如果小數部分也在精度範圍內,比如10.0/2.0 = 5.

0,2位以上的輸出位數時,後面的都是0,此時,當然不需要舍入了。

資料型別轉換有兩種方式,一種是預設強制轉換,比如將char、short、int、long和float型別資料賦給double型別變數時,編譯程式會自動實施轉換,這是因為,在精度更高時,這樣的轉換是內有損失的。另一種是手動強制型別轉換,比如dnum = (double)inum;,意思是將整形變數inum首先轉換為雙精度資料,然後再付給dnum。當將高精度型別變數賦給低精度型別變數時,除非手動強制轉換,否則,編譯程式會有提示的。

2樓:匿名使用者

資料強制轉換是用捨棄的方法,不會用四捨五入,什麼時候用四捨五入是需要詳細說明的,也就是你的業務需求而定,你可以把數字+0.5,然後進行強制轉換

3樓:匿名使用者

有四捨五入的情況,在你想要保留幾位小數的時候,多餘的緊接著的一位要四捨五入

不過c裡面沒有提供四捨五入的函式,不過你可以這樣a = (int)(a*100 + 0.5)/100這只是一個小技巧,對a的第三位進行四捨五入

4樓:奧特曼和他老婆

同樣的困惑,期待解答。尤其是當量化的位寬超過32位時,如何來實現截斷,用(int)x 強制轉換時,正數會出錯,但負數正確,不知何解。

5樓:匿名使用者

double強制轉換成int型的時候保留整數部分的。。

比如double a=1.5;

int b=a;

a就是1。

6樓:匿名使用者

浮點運算時,由於精度的問題,涉及到了四捨五入,這也是為什麼一個很大的數和一個很小的數相加,會出錯的原因。

但資料型別強制轉換時,是採取的捨棄原則,沒有四捨五入。

c語言中數值轉換什麼時候需要四捨五入,什麼時候不需要?如3.1415926轉換成%f就是3.141

7樓:匿名使用者

1、實型內部之間的轉換要四捨五入(例如雙精度強制轉換成單精度就要),如果實型轉整型的話專,就直接去屬掉小數部分就行了。

2、實數1234567.89賦值給單精度浮點型變數值怎麼又成為1234567.80,原因是float的有效位為前七位,從第八位起,得到的資料都是不準確的。

c語言:int型的強制型別轉換是按四捨五入嗎?

8樓:跪著作揖

強制型別轉換int的結果只保留整數部分,不是四捨五入。

例如:int 3.14,結果為3;

int  3.58,結果也為3。

int是將一個數值向下取整為最接近的整數的函式。int是資料庫中常用函式中的取整函式,常用來判別一個數能否被另一個數整除。

擴充套件資料

int 函式使用的注意事項:

1、 語法int(number)其中number是需要進行向下舍入取整的實數。

2、 int函式是不進行四捨五入,直接去掉小數部分取整。

3、int函式處理負數的小數時總是向上進位的。

標準規定int的最小取值範圍是 -32767 到 32767。

int的取值範圍因機器而異,但是一定要大於或者等於 -32767 到 32767。一般來說,int佔用一個字的記憶體空間。因此,字長為 16 位(bit)的舊式 ibm 相容機使用 16 位來儲存整型int,取值範圍是-32768 到 32767 。

目前的個人電腦一般都是 32 位字長的,這些電腦中,int一般也是 32 位的,取值範圍是 -2147483648 到 2147483647。對於使用 64 位 cpu 的電腦,使用更多位儲存int也是很自然的事情,取值範圍當然也會更大。

9樓:匿名使用者

作為函式,int函式指資料庫中常用函式中的

「向下取整函式」。常用來取一個數中的整數部分。int是將一個數值向下取整為最接近的整數的函式。為取整函式。

意思是將被轉換數直接擷取整數部分,不進行四捨五入運算。例如:

int(123.456);//取值為123

int(-123.456);//取值為124

int(1234.56);//取值為1234

擴充套件資料:

除int外,其他強制轉換有:

void:宣告函式無返回值或無引數,宣告無型別指標,顯示丟棄運算結果。(c89標準新增)

char:字元型型別資料,屬於整型資料的一種。(k&r時期引入)

int:整型資料,表示範圍通常為編譯器指定的記憶體位元組長。(k&r時期引入)

float:單精度浮點型資料,屬於浮點資料的一種。(k&r時期引入)

double:雙精度浮點型資料,屬於浮點資料的一種。(k&r時期引入)

_bool:布林型(c99標準新增)

_complex:複數的基本型別(c99標準新增)

_imaginary:虛數,與複數基本型別相似,沒有實部的純虛數(c99標準新增)

_generic:提供過載的介面入口(c11標準新增)

修飾關鍵字:

short:修飾int,短整型資料,可省略被修飾的int。(k&r時期引入)

long:修飾int,長整型資料,可省略被修飾的int。(k&r時期引入)

long long:修飾int,超長整型資料,可省略被修飾的int。(c99標準新增)

signed:修飾整型資料,有符號資料型別。(c89標準新增)

unsigned:修飾整型資料,無符號資料型別。(k&r時期引入)

restrict:用於限定和約束指標,並表明指標是訪問一個資料物件的唯一且初始的方式。(c99標準新增)

10樓:聽不清啊

不是的。

c語言的int型的強制型別轉換是截尾取整的。

即int x=(int)3.997;

x的值是3。

11樓:匿名使用者

不會四捨五入,會直接截斷取整數部分。

12樓:匿名使用者

有四捨五入的情況,在你想要保留幾位小數的時候,多餘的緊接著的一位要四捨五入

不過c裡面沒有提供四捨五入的函式,不過你可以這樣a = (int)(a*100 + 0.5)/100這只是一個小技巧,對a的第三位進行四捨五入比如將55.3351保留2位小數,第三位四捨五入,可以用a=(a*100+0.

5)/100.0或a=(int)(a*100+0.5)/100.

0,,,我的問題是,,兩個都行嗎?有什麼區別,我做過實驗,貌似沒什麼區別……

13樓:直接用使用者名稱

不是 是捨棄小數部分

C語言中兩個整形相除是不是自動四捨五入

所謂的整形,就是取整數部分。如果a 3.98,則 int a 3。a 58.49,則 int a 58。取整隻看整數部分取值,而不是四捨五入。c語言中,一般而言整型數是雙位元組,所以 有符號型 最大 32767,最小 32768無符號型 內最大 65535,最小 0 但對於c 面對32位機時,整型容...

為什麼用SPSS開啟excel會四捨五入啊

spss開啟excel時,變數型別不一致就會導致資料被四捨五入,或者無法計算。spss的資料欄位,分為數值 日期 貨幣 字元等不同型別,數值度量方式又分為度量 名義 序列等。在變數檢視中,修改當前變數的型別和要求可以做到不同的呈現。型別是數值,小數點選擇需要的位數,原始資料表就會改變。可以看到同樣的...

除了四捨五入法,常用的近似數的取法還有兩種是什麼

進一 法和 去尾 法 進一法 去尾法。這兩種 除了四捨五入法還有什麼取近似數的方法 除了四捨五入,還有截尾法 進位法 四捨六入五後有數看單雙法等等。數學除了 四捨五入 法,還有什麼法 數學除了 四捨五入 法取近似值,還有進1法和去尾法取近似值,不論用哪一種方法都要根據具體情況來定。進一法比如有5噸的...