# incloud stdio
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供山陽網(wǎng)站建設(shè)、山陽做網(wǎng)站、山陽網(wǎng)站設(shè)計(jì)、山陽網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、山陽企業(yè)網(wǎng)站模板建站服務(wù),十多年山陽做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
int main(void)
{
float a ;
scanf(“%f”,a);
a=(int)(a*1000+0.5)/1000.0;
printf (“%0.3f”,a);
return 0;
}
擴(kuò)展資料:
其他方法實(shí)現(xiàn)四舍五入:
int myround(double indata,int precision,double * outdata)
{
long pre = 1,i;
for(i = 0; i precision; i ++)pre = pre * 10;
if(cy_FloatCompare(indata,0.00) 0)
* outdata =(int)((indata * pre)+0.5)/100.00;
else
* outdata =(int)((indata * pre)-0.5)/100.00;
return 0;
}?
// cy_FloatCompare是浮點(diǎn)數(shù)與0比較的函數(shù),假設(shè)它存在。返回值與strcmp相同。
要用C語言實(shí)現(xiàn)四舍五入,有一個(gè)很巧妙的方法,僅使用int i=(int)(a+0.5)即可。如果遇到有負(fù)數(shù)的情況,只需要將加號改為減號即可。
C語言中四舍五入這樣表示:
inta=100.453627。
printf("%.1f",a+0.05);//四舍五入到十分位。
printf("%.2f",a+0.005);//四舍五入到百分位。
以此類推,對于十進(jìn)制小數(shù).5類型數(shù)(如0.5,11.5,18.5),即小數(shù)部分可以以2的負(fù)一次方來表示的數(shù),這時(shí)計(jì)算機(jī)是可以“完美”的儲(chǔ)存這個(gè)十進(jìn)制小數(shù)字。而對于.6,.7,.8,.9與.4,.3,.1,.2,這類數(shù)字,計(jì)算機(jī)雖然無法“完美”的儲(chǔ)存這些數(shù)字,在這樣的情況下可以運(yùn)用所謂的“+0.5的取整法”。
所謂加0.5的取整法就是運(yùn)用在C語言中浮點(diǎn)型數(shù)強(qiáng)制轉(zhuǎn)化為整形數(shù)時(shí)只會(huì)其保留整數(shù),而不會(huì)進(jìn)行四舍五入的計(jì)數(shù)法則。所以對于保留整數(shù)的小數(shù)來說,我們只需在其原來的基礎(chǔ)上+0.5后再進(jìn)行強(qiáng)制類型轉(zhuǎn)換,就可以達(dá)到不會(huì)出錯(cuò)的四舍五入。
有的標(biāo)準(zhǔn)不存在C語言四舍五入:
C語言中的四舍五入在C98標(biāo)準(zhǔn)中,標(biāo)準(zhǔn)C函數(shù)庫是沒有關(guān)于四舍五入的函數(shù)的,到了C99標(biāo)準(zhǔn)才出現(xiàn)了ceil(),floor(),nearbyint(),round()之類豐富的取整函數(shù)。
現(xiàn)在使用的gcc都是C99標(biāo)準(zhǔn)了,而Windows下的VC(包括VS2008)還是C98標(biāo)準(zhǔn),所以需要遵從嚴(yán)格格式,包括沒有內(nèi)聯(lián)inline、沒有單行注釋//、變量要寫在代碼塊的前頭等等,最大的缺點(diǎn)就是沒有那些函數(shù)的支持。
c99 開始有 round() 函數(shù)處理 四舍5入。
函數(shù)原型:
double round (double x);
float roundf (float x);
long double roundl (long double x);
C++11 有 double round (T x);
----
低于c99 的可以自己寫,例如: 絕對值+0.5,
絕對值函數(shù)原型:
double fabs (double x);
float fabs (float x);
long double fabs (long double x);
正數(shù)和負(fù)數(shù)的 四舍5入 有天花板和地板的 處理,由你自己選擇(上靠,下靠) 。
天花板和地板函數(shù)原型:
double ceil (double x);
float ceil (float x);
long double ceil (long double x);double floor (double x);
float floor (float x);
long double floor (long double x);
# incloud stdio
int main(void)
{
float a ;
scanf(“%f”,a);
a=(int)(a*1000+0.5)/1000.0;
printf (“%0.3f”,a);
return 0;
}
擴(kuò)展資料:
其他方法實(shí)現(xiàn)四舍五入:
int myround(double indata,int precision,double * outdata)
{
long pre = 1,i;
for(i = 0; i precision; i ++)pre = pre * 10;
if(cy_FloatCompare(indata,0.00) 0)
* outdata =(int)((indata * pre)+0.5)/100.00;
else
* outdata =(int)((indata * pre)-0.5)/100.00;
return 0;
}?
// cy_FloatCompare是浮點(diǎn)數(shù)與0比較的函數(shù),假設(shè)它存在。返回值與strcmp相同。
# incloud stdio
int main(void)
{
float a ;
scanf(“%f”,a);
a=(int)(a*1000+0.5)/1000.0;
printf (“%0.3f”,a);
return 0;
}
擴(kuò)展資料:
其他方法實(shí)現(xiàn)四舍五入:
int myround(double indata,int precision,double * outdata)
{
long pre = 1,i;
for(i = 0; i precision; i ++)pre = pre * 10;
if(cy_FloatCompare(indata,0.00) 0)
* outdata =(int)((indata * pre)+0.5)/100.00;
else
* outdata =(int)((indata * pre)-0.5)/100.00;
return 0;
}?
// cy_FloatCompare是浮點(diǎn)數(shù)與0比較的函數(shù),假設(shè)它存在。返回值與strcmp相同。
round(x)
參數(shù)時(shí)double型,返回小數(shù)對整數(shù)部分的四舍五入值
比如 round(3.623); 返回4