用 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