有四舍五入的情況,在你想要保留幾位小數(shù)的時(shí)候,多余的緊接著的一位要四舍五入
10年積累的做網(wǎng)站、網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶(hù)對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶(hù)得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有聊城免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
不過(guò)C里面沒(méi)有提供四舍五入的函數(shù),不過(guò)你可以這樣
a = (int)(a*100 + 0.5)/100
這只是一個(gè)小技巧,對(duì)a的第三位進(jìn)行四舍五入
四舍五入算法:如果要求精確到小數(shù)點(diǎn)后面的第n位,則需要對(duì)第n+1位進(jìn)行運(yùn)算。方法是將該小數(shù)乘以10的n+1次方后加5,然后除以10并強(qiáng)制轉(zhuǎn)換變量類(lèi)型為長(zhǎng)整型,再將該數(shù)除以10的n次方,同時(shí)強(qiáng)制轉(zhuǎn)換類(lèi)型為浮點(diǎn)型。
代碼實(shí)現(xiàn)如下:
long t; /*定義長(zhǎng)整型變量t*/
t=(h*10n+1+5)/10; /*對(duì)h進(jìn)行操作,得到值浮點(diǎn)型,t取值時(shí)取整數(shù)部分。10n+1為要擴(kuò)大的倍數(shù)*/
h=(float)t/10n; /*將t縮小10n倍,并轉(zhuǎn)換成浮點(diǎn)型*/
# 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相同。