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