㈠ c語言中一個整數除以另一個整數結果為什麼只取整
因為int 型本身沒小數部分,int和int型的數據操作,得到的結果肯定是整數型的,所以小數部分直接去掉了,就算用%f去輸出,也不會是正確的結果。
例如:
inta=5,b=3;
floatc;
c=a/b;//輸出結果為1.0c是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("拜託……");
}