c語言求余怎么四舍五入?
設(shè)floatxinty有y(int)(x0.5)gt(int)x?(int)x1:(int)x經(jīng)過上面的運(yùn)算,y的值就是對(duì)x取整的結(jié)果。
它是利用整數(shù)運(yùn)算的截?cái)嗵匦詫?shí)現(xiàn)的。
比如:inta0.75四舍五入,賦給A的值為0,小數(shù)點(diǎn)截?cái)唷?/p>
如果想對(duì)整數(shù)進(jìn)行四舍五入,那么可以:a(int)(0.750.5)和數(shù)學(xué)中四舍五入的結(jié)果一樣,都是1;
如果要四舍五入到小數(shù)點(diǎn)后,可以這樣計(jì)算:
小數(shù)點(diǎn)后保留兩位小數(shù),即四舍五入兩位小數(shù),0.756。
浮點(diǎn)數(shù)a0.756,bintxba*100b0.5xbbx/100
操作如下:首先將0.756乘以100得到75.6,然后利用取值運(yùn)算的截?cái)噙M(jìn)行四舍五入。四舍五入后,75.60.576.1等于76,再除以100得到結(jié)果:0.76。
c語言如何使小數(shù)以整數(shù)輸出不四舍五入?
簡(jiǎn)單地使用%f無法避免舍入。為了避免舍入,您需要編寫自己的函數(shù)。
實(shí)現(xiàn)有很多種,舉兩個(gè)常用的例子:
1、
舍入時(shí),強(qiáng)制截取整數(shù)部分,取出要輸出的整數(shù)部分和小數(shù)部分。
如果保留三位小數(shù),可以編寫以下代碼:
雙v123.456789//要輸出的數(shù)字。
inta,b;//整數(shù)部分和小數(shù)部分。
a(int)v;//四舍五入得到整數(shù)部分。
b(int)((v-a)*1000);//獲取三位小數(shù)。
printf(%d.d
,a,b);//分別輸出小數(shù)部分和整數(shù)部分。
2.首先輸出一個(gè)字符串,然后截取所需長(zhǎng)度的小數(shù)部分并輸出。與上述示例功能相同的代碼如下:
雙v123.456789//要輸出的數(shù)字。
intI;//用于計(jì)數(shù)。
chars[100];//字符串緩存。
sprintf(s,%lf,v);//將v保存到一個(gè)字符串中,并執(zhí)行s123。13660.686868686617
for(I0;s[i]!