c語言四捨五入取整
Ⅰ c語言中如何取整
參與運算量均為整型時,
結果也為整型,捨去小數。如果運算量中有一個是實型,則結果為雙精度實型。
printf("%d,%d\n",10/3,-10/3);
printf("%f,%f\n",10.0/3,-10.0/3);
c語言有以下幾種取整方法:
1、直接賦值給整數變數。如:
int
i
=
2.5;
或
i
=
(int)
2.5;
這種方法採用的是捨去小數部分,可以用於你的問題。
2、c/c++中的整數除法運算符"/"本身就有取整功能(int
/
int),而下面介紹的取整函數返回值是double。整數除法對正數的取整是捨去小數部分,但是整數除法對負數的取整結果和使用的c編譯器有關。
3、使用floor函數。floor(x)返回的是x的整數部分。如:
floor(2.5)
=
2
floor(-2.5)
=
-3
4、使用ceil函數。ceil(x)返回的是不大於x的最小整數。如:
ceil(2.5)
=
2
floor和ceil對於正數沒有區別,但是對於負數結果不同。
Ⅱ C語言怎麼四捨五入
利用取整。
比如 四捨五入到千分位,可以
(int)(x*1000+0.5)/1000.0
十分位(int)(x*10+0.5)/10.0
其他類似,只改變其中倍數的值即可。
Ⅲ c語言中如何進行四捨五入,求詳細解釋!!謝謝!
方法一:
#include<stdio.h>
int main()
{
double d1,d2,d3;
d1=-3.1415926;
d2=(int)(d1*10+0.5)*0.1;
printf("d1=%f,保留一位小數的結果為:%.1f ",d1,d2);
d3=(int)(d1*1000+0.5)*0.001;
printf("d1=%f,保留三位小數的結果為:%.3f",d1,d3);
總結四捨五入保留n為小數
(int)(x*10的n次方+0.5)*10的負n次方;
其次這個方法對負數無效;如果非要用可以先取正數部分算,最後加上負號
}
方法二:
使用round()函數。
#include"stdio.h"
#include"math.h"
void main()
{
float x;
scanf("%f",&x);
int y = round(x);
printf("%d",y);
}
(3)c語言四捨五入取整擴展閱讀:
C語言編寫注意事項:
1、%運算符不能應用與float或double類型。
2、char類型轉換為int型時, 無法判斷它是signed還是unsigned.這樣其結果有可能為負數, 因此轉換時盡量指定signed和unsigned限制符。
3、++i與i++不同之處: ++i是先+1在使用, i++是先使用i在遞加1。
4、三元運算符"?:" 第一個表達式的括弧不是必須的,但是由於三元表達式的優先順序非常低,我們還是將第一個表達式用()括起便於閱讀和理解。
5、C語言中可以使用遞歸 (即函數調用自身函數), 其不節省儲存器開銷也不加快執行速度, 只是使程序緊湊便於理解。