⑴ 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語言 通信package除不盡怎麼計算
把time.h include進來然後在代碼的前面和後面都加一條代碼,獲得時間 long start=clock(); long end=clock();兩個減一下就是秒數
⑶ c語言大整數除法
#include "stdio.h"
#include "math.h"
void main(void)
{
int a,b,c,d,e,g;
float f;
printf("int a,b");
scanf("%d %d",&a,&b);
c=a+b;
d=a-b;
e=a*b;
f=a/(float)b ;
g=a%b;
printf("c=%d\n d=%d\n e=%d\n f=%f\n g=%d\n",c,d,e,f,g);
}
整數除整數得到的一定是整數,這個和c語言中的自動類型轉換有關,按照我上面寫的,把b強制轉換成浮點型,這樣得到的結果就是浮點型,還有輸出浮點型數時用 %f 。
⑷ C語言除法取整問題
1.引入頭文件#include "stdafx.h"#和include "stdio.h"。
2.定義主函數void main(){},插入如下代碼:
float PI=3.1415926;
int number=0;
number=(int)PI;
printf("%d ",number);
3.按紅嘆號測試。C語言有以下幾種取整方法: 1、直接賦值給整數變數... 而下面介紹的取整函數返回值是double
⑸ c語言中整數相除的風險,應如何避免
#include<stdio.h>
#include<string.h>
voidmain()
{
inta,b,c;////a/b
scanf("%d%d",&a,&b);
if(b==0)
printf("分母為0 ")
else
{
///你的代碼
}
}
⑹ C語言求余兩個數只能為整數嗎
這是算術上的問題,余數的來由,就是處理,整數與整數之間除不盡的問題,當然要整數
除非特殊情況,比如你自己要解決某個問題,自己定義一套東西也可以的。。。
⑺ c語言中整數小數乘除有何規定
在C語言中無論整型數還是浮點數,都可以進行乘法和除法操作。需要注意的是類型轉換。比如:
printf("%f",3/2);
輸出的結果是0.000000。這並不是一個預期的運算結果。因為3、2這樣的常量在C語言中默認是整型常量。3/2的結果是1。但是對於整數1來說,它的機器碼
而浮點數的編碼一般使用的IEEE754編碼,上面的機器碼用IEEE754編碼表示,即為0。正確的寫法應該是:
printf("%f",(float)3/2);