回覆列表
-
1 # tomorrow951
-
2 # 愛學計算機
在c語言中這個問題是有多種解決方法的。
假設我們有個數字3.1415926...我們要在它指定的小數位置上四捨五入。假設第4位四捨五入,要得到結果3.142000
我們需要如下程式:
#include<stdio.h>
int main()
{double num1,num2;
num1=3.1415926;
num1=(int)(num1*1000+0.5);//利用強制型別轉換運算將數字第3位以後的小數部分捨去
num2=num1/1000; //再將得到的數除以1000還原
printf("%f",num2);
return 0;
}
如果你是在C99規範的編譯器中,就可以直接使用round函式
用法如下:
#include<stdio.h>
int main()
{
num1=3.1415926,num2;
num2=num1*1000;
num2=round(num2)/1000;//round(x)返回x的四捨五入整數值,就捨去後面的小數了。
printf("%f",num2);
return 0;
}
如果你僅僅是要四捨五入輸出一個浮點數,我們可以直接這樣
#include<stdio.h>
int main()
{
double num1;
num1=3.1415926;
printf("%.3f",num1);//0.3是附加格式字元,意為保留小數點後面3位,自動四捨五入
return 0;
}
利用取整運算的截斷特點實現。比如:int a=0.75;取整後賦值給a的是0,小數點後面的被截斷了。如果要做整數的四捨五入,那麼可以:a=(int)(0.75+0.5);取整後得到的與數學中四捨五入的結果一致,都是1;如果要進行小數點後面的四捨五入,可以這樣計算:要保留小數點後面兩位的小數,即在小數點後面兩位上做四捨五入,0.756float a=0.756,b; int x; b=a*100; b+=0.5; x=b; b=x/100;運算是這樣的:先將0.756乘以100,得到75.6,然後利用取值運算的截斷做四捨五入,75.6+0.5=76.1取整後等於76,再除以100,得到結果:0.76