/*
ceil(13.1) = 14
floor(13.1) = 13
ceil(13.8) = 14
floor(13.8) = 13
ceil(-2.6) = -2
floor(-2.6) = -3
ceil(-2.5) = -2
floor(-2.5) = -3
Press any key to continue
*/
#include
int ceil(double dnum) {
if(dnum < 0.0) return -((int)(-dnum));
return (int)(dnum + 1);
}
int floor(double dnum) {
if(dnum < 0.0) return -((int)(-dnum + 1));
return (int)(dnum);
}
int main() {
printf("ceil(13.1) = %d\n",ceil(13.1));
printf("floor(13.1) = %d\n",floor(13.1));
printf("ceil(13.8) = %d\n",ceil(13.8));
printf("floor(13.8) = %d\n",floor(13.8));
printf("ceil(-2.6) = %d\n",ceil(-2.6));
printf("floor(-2.6) = %d\n",floor(-2.6));
printf("ceil(-2.5) = %d\n",ceil(-2.5));
printf("floor(-2.5) = %d\n",floor(-2.5));
return 0;
}
建议看看这个,涉及到浮点数的内存表示
http://mathforum.org/kb/message.jspa?messageID=4534522&tstart=0