作业帮 > 综合 > 作业

把一个长双精度的数强制转换成一个单精度的结果怎么样?

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/06/04 15:40:54
把一个长双精度的数强制转换成一个单精度的结果怎么样?
#include
float fun(float h)
{long w ;
w=h*100+0.5;
return(float)w/100;
}
main()
{float a;
printf("Enter a: "); scanf( "%f", &a);
printf("The original data is : ");
printf("%f \n\n", a);
printf("The result : %f\n", fun(a));
}
把一个长双精度的数强制转换成一个单精度的结果怎么样?
只要那个数在单精度范围内就没什么改变,超过将会导致数据错误.
再问: 我也是这么想的,可是有道题不是这样,如下:编写一个函数float fun(float h),函数的功能是保留h小数点后两位数,并对第三位进行四舍五入。例如:h值为8.32433,则函数返回8.320000; h值为8.32533,则函数返回8.330000。程序看问题补充。
再答: 程序是正确的,我试了一下;没什么问题啊;
再问: 程序没错啊,我是奇怪w=h*100+0.5;return(float)w/100;这两个语句,例如当h= 8.32433时,w=832.933,再把w转化为float变成832.933000再除以100不是应该等于8.329330吗?
再答: 执行w=h*100+0.5;过后W=832;W是整形数据这里面存在一个自动类型转换问题,看书赋值那地方有说