當前位置:首頁 » 編程語言 » 為什麼c語言只顯示整數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

為什麼c語言只顯示整數

發布時間: 2022-10-19 03:04:33

c語言中一個整數除以另一個整數結果為什麼只取整

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

例如:

inta=5,b=3;

floatc;

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

(1)為什麼c語言只顯示整數擴展閱讀:

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

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。

㈡ C語言,printf輸出實數時只保留整數可以用%d輸出么

通常是不行的
比如:
float a=5.6;
printf("%d",a);這是不行的
但是,如果要,一定要強制轉換,上面的形式是不會強制轉換的
float a=5.6;
printf("%d",(int)a);這樣就行了
float一般佔四位元組,int一般佔2位元組,size不同的數是不能亂輸的,不然數據丟失是肯定的

㈢ 用C語言做加減乘除除法,為何算除法出來總是整數

雖然f定義為float類型,但a和b都是int型,a/b所得結果為整型,然後在轉換為float類型賦給f,所以算出來總是整數,可改為:f=a*1.0/b; 輸出float型用%f。

㈣ C語言怎麼輸出全是整數,就是把分數自動過濾掉!

強制轉換變數類型、比如將float類型的數 強製成int型,自動捨去分數部分。
float a=5.7;
int i;
i = (int)a;
printf("%d",i);
輸出的是5
還有一種是是用printf控制小數點後位數。
float a=5.7,b=5.4;
printf("%.0f, %.0f",a,b);

輸出結果是 6,5
%x.yf的意思

輸出的是浮點型,x表示數字所佔寬度,y表示小數點後位數,四捨五入。

㈤ C語言平均數只保留了整數怎麼辦

C語言平均數只保留了整數可以利用C語言的強制轉換規則。
C語言規定,當浮點數強制轉換為整型類型時,只保留整數部分。
所以對於浮點數,比如float類型a,執行(int)a後的值就是整數部分。
這樣當執行a-(int)a時,得到的就是小數部分的值了。
如果該功能經常使用,那麼可以定義一個帶參數的宏
#defineDECIMAL(X)(x-(int)x)
這樣執行DECIMAL(a)得到的值就是t的小數部分。

㈥ C語言如何輸出小數 我輸出的都是整數 很郁悶

x=(j-100)/2;
改為x=(j-100)/2.0;就可以了

㈦ C語言:規定只能輸入正整數,錯哪了

要滿足你的循環條件,那麼輸入的就不能是整數,但是這個就出現一個問題,比如你輸入一個字母A,由於scanf(「%u」,&num)讀到的是非數值的數據,所以它不會把A從緩沖區中取出賦給num,那麼A就一直停留在緩沖區中,第二次循環,還是讀取A,滿足循環條件,所以你的這個就是死循環。
while(scanf("%u",&num)!=1)
{
while(getchar()!='\n'//把緩沖區的字元全部拿走
continue;
printf("拜託……");
}