用 int 的强制转换是直接取下面一个整数,不论是不是 四舍五入。。。
自己写了一个round四舍五入模板:
四舍五入代码模板:
#include <stdio.h>
int round(double a)
{
if(a-(int)(a)>=0.5)
return (int)(a)+1;
else
return (int)(a);
}
int main()
{
double a;
int result;
while(scanf("%lf",&a)!=EOF)
{
result=round(a);
printf("after round:%d\n",result);
}
return 0;
}
运行结果为:
测试代码之一:
#include <stdio.h>
int main()
{
printf("5 * 1.5 = %d\n",(int)(5*1.5));
printf("4 * 2.1 = %d\n",(int)(4*2.1));
return 0;
}
运行结果是:
7
8
这说明:
(int)强转只能取下一个整数。。。7.5取7;8.4也只取8
测试代码之二:
#include <stdio.h>
int main()
{
double a=2.5;
printf("%d\n",(int)(a*4));
if((a*4)==10)
printf("YES\n");
else
printf("NO\n");
return 0;
}
运行结果是:
10
YES
这说明:
double 型可以和 int 型比较,10.0 == 10 //OK