c语言中,float类型的数据被强制转换成int类型是,是小数位四舍五入还是只保留整数? 求解??

如题所述

几种取整方法验证程序,如下,可以编译运行体会下

int强制转换是不保留小数的。

ceil是向上取整,floor是向上取整,这两个函数返回值是double类型的

c语言中没有四舍五入函数,需要使用时可以自己定义下。

#include <math.h>
#include <stdio.h>
// 自定义四舍五入宏
#define ROUND(x) (int)(x + 0.4999999999999999)
double round(double x, int d) // d为保留数字位数
{
double y = pow(10, d);
return floor(x * y + 0.5) / y;
}
double round(double x, double d) // d为圆整精度
{
return floor(x / d + 0.5) * d;
}

void main()
{
double a = 3.0;
int i;
for(i=0; i<10; i++, a+=0.1)
printf("%f\t%d\t%d\t%d\t%d\n", a, (int)a, (int)ceil(a), (int)floor(a), ROUND(a));
double x = 53.1415926;
for(i=-1; i<5; i++) printf("%f\t", round(x, i));
printf("%f\t", round(x, 0.037));
}

追问

谢谢~~

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-01-11
只会保留整数。有个函数是四舍五入的
相似回答