C語言中整數除以另整數結果為什麼只取整

時間 2021-08-11 18:00:53

1樓:大野瘦子

因為int 型本身沒小數部分,int和int型的資料操作,得到的結果肯定是整數型的,所以小數部分直接去掉了,就算用%f去輸出,也不會是正確的結果。

例如:int a=5, b=3;

float c;

c = a/b;  // 輸出結果為1.0

c是float型的,按常理c應該等於1.667,但是由於被除數(即變數a)的資料型別為int型,所以在執行完a/b後,運算結果會轉換為int型(即捨去小數),故a/b = 1,之後再將取整後的資料(即整數1)轉換為float型別(即1.0)賦值給變數c,所以最後c=1.

0c語言有以下幾種取整方法:

1、直接賦值給整數變數。如:

int i = 2.5; 或 i = (int) 2.5;

這種方法採用的是捨去小數部分

2、c/c++中的整數除法運算子「/」本身就有取整功能(int / int),但是整數除法對負數的取整結果和使用的c編譯器有關。

3、使用floor函式。

floor(x)返回的是小於或等於x的最大整數。如:

floor(2.5) = 2

floor(-2.5) = -3

4、使用ceil函式。

ceil(x)返回的是大於x的最小整數。如:

ceil(2.5) = 3

ceil(-2.5) = -2

floor()是向負無窮大舍入,floor(-2.5) = -3;ceil()是向正無窮大舍入,ceil(-2.5) = -2。

2樓:天雲一號

c語言規定除法運算子( / )的運算結果的資料型別與被除數的資料型別儲存一致,所以一個整數除以另一個整數的結果為整數。

舉例如下:

int a=5, b=3;

float c;

c = a/b;  // 輸出結果為1.0解釋如下:

雖然變數c是float型的,按常理c應該等於1.667,但是由於被除數(即變數a)的資料型別為int型,所以在執行完a/b後,運算結果會轉換為int型(即捨去小數),故a/b = 1,之後再將取整後的資料(即整數1)轉換為float型別(即1.0)賦值給變數c,所以最後c=1.0

3樓:匿名使用者

int 因為其儲存單元只有2個位元組,int a=7,b=5,c;c=a/b;本來c是等於正確值的,但是2個位元組的二進值只能儲存到整數部分,小數部分就被切去了

4樓:匿名使用者

與你定義的除數,被除數和結果的型別有關

5樓:窮日子過

那要看你用的是怎麼輸出格式了

c語言中 兩個整形變數相除的結果是不是隻取整數部分 不用四捨五入嗎??

6樓:魂鬥水下八關

所謂的整形,就是取整數部分。 如果a=3.98 則 int a=3。a=58.49,則 int a=58。取整隻看整數部分取值,而不是四捨五入哦!

7樓:匿名使用者

是的,比如 10 / 3 的結果是 3,而不是3.33333

如果是 10.0 / 3,結果就是3.33333

c語言中什麼運算只取整數部分,什麼時候不但取整,還要四捨五入?? 發現c語言中很多時候不用四捨五入

8樓:夢羽天堂

取整要看型別的自動轉換了,,比如a和b都是整形資料,那麼a/b的結果就一定是整形。結果就取整數部分,如果其中有一個是浮點型,那麼結果就是浮點型,但是不會四捨五入,如果需要四捨五入那麼應該寫成a/b+0.5.

自動轉換的順序是char,short,int,float,double,越往後優先順序越高

9樓:狂

取整的話 還是要看資料型別的 int型別的除法就是取整的

至於四捨五入什麼的 沒有專門的規定 可以自己處理一下即可

10樓:匿名使用者

定義int的時候就取整了

11樓:匿名使用者

c語言裡面都沒有四捨五入。的都是隻取整數部分。

12樓:鬼火狼煙

到底需要四捨五入還是直接取整不是程式說了算了,是根據實際情況說了算的這個要看你需要的結果了

比如說double x=1.3;

printf("%d",int(x)) 取整printf("%d",int(x+0.5)) 四捨五入

c語言除法取整問題

13樓:活寶逗比先生

1.引入標頭檔案#include "stdafx.h"#和include "stdio.h"。

2.定義主函式void main(){},插入如下**:

float pi=3.1415926;

int number=0;

number=(int)pi;

printf("%d\n",number);

3.按紅歎號測試。c語言有以下幾種取整方法: 1、直接賦值給整數變數... 而下面介紹的取整函式返回值是double

14樓:應有福勵風

n=2,因為左面的值為假,右面就不做了,所以n的值不發生變化,仍為2

15樓:匿名使用者

函式floor表示向下取整, x = floor(3.5) ---> x =3

函式round表示向上取整, x = round(3.5) ---> x = 4

double a = 3.3; int b = (int)a; 這個是都是向下取整, --->b = 3

16樓:天臨契承

變數是int 的話

在運算時 自動取整

c語言中float型資料怎麼 取整數部分演算法 或取小數部分

17樓:蟲心菜

分析如下:來

一種簡單的辦源

法是直接強制轉換到int型就是整數部分。減去這個int型就是小數部分了。

**如下:

float n=12.223;

int x=(int)n;

float y=n-(float)x;

得出的x為資料的整數部分,y為資料的小數部分。

拓展資料

浮點型資料型別,float 資料型別用於儲存單精度浮點數或雙精度浮點數。浮點數使用 ieee(電氣和電子工程師協會)格式。浮點型別的單精度值具有 4 個位元組,包括一個符號位、一個 8 位 excess-127 二進位制指數和一個 23 位尾數。

尾數表示一個介於 1.0 和 2.0 之間的數。

由於尾數的高順序位始終為 1,因此它不是以數字形式儲存的。此表示形式為 float 型別提供了一個大約在-3.4e+38 和 3.

4e+38 之間的範圍。

18樓:捐你妹

一種簡單的辦法是直接強制轉換到int型就是整數部分。

減去這個int型就是小數部分了。

19樓:

float x=1234.567,z;

long int y;

取整數部分: y = (int) x;

取小數部分: z = x - y;

20樓:匿名使用者

float n=12.223;

int x=(int)n;

float y=n-(float)x;

21樓:匿名使用者

小數取整

#include

void main()

c語言中將輸入的整數逆轉顯示,c語言用迴圈的方法,把輸入的一個整數,倒序輸出

思路 可以利用while迴圈依次對其進行對10取餘輸出併除10操作直到其為0為止,輸出的結果就是該整數的倒序。include int main return 0 輸出 12345 5 4 3 2 1 取餘加除法就可以了 include int main return 0 include includ...

c語言中,兩整數相除,求帶兩位小數的結果,求完整程式

c語言中,兩整數相除,帶兩位小數的結果,可以使用下面的方法 include int main int a,b printf please input a scanf d a printf please input b scanf d b printf a b 2f float a b 執行結果如下 ...

怎麼判斷整數是否包含某位數在c 語言中

小妥 如果是數值的話,那麼將原始的數值減去取整後的數值如果大於0就表示有小數 if n int n 0 return true 如果是字串的話,有兩種方法,一種是將字串轉換為數值後用上面說的方法判斷,另一種是逐字判斷是否包含字元小數點 利用迴圈求餘運算,可以求出一個整數所有位上的數字,特點是倒序順序...