阅读409 返回首页    go 阿里云 go 技术社区[云栖]


关于四舍五入

用 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



最后更新:2017-04-03 14:53:53

  上一篇:go 机器学习_基于adaboost和haar like特征的人脸识别
  下一篇:go GNU Radiuo 数据处理模块