把握一個原則:浮點數轉成整數,小數部位會全部捨去。
所以最簡單的作法就是,把浮點數加0.5,再轉成整數即可。
因為四以下要捨,五以上要入,所以加0.5。如果是負數,
則減去0.5。若是做四捨五入到小數第一位的話,就先乘10,
再加0.5,再除以10(唯要注意型態轉換),以此類推。
其實math.h中就有round()函式,但是是C99的東西。
或是用floor()跟ceil()實做也是ok的。
以下是程式碼。(寫個大概而已)
#include <stdio.h>
int round(double);
int main(void)
{
double x;
scanf("%lf", &x);
printf("%d\n", round(x));
return 0;
}
/* round: do round to x */
int round(double x)
{
if (x > 0)
return (int)(x + 0.5);
return (int)(x - 0.5);
}
參考連結:
http://dejob.blogspot.com/2009/01/c-rounding.html
http://blog.xuite.net/freeleo168/Learn/19008875
沒有留言:
張貼留言