#include<stdio.h>
#include<math.h>
float roundtointeger(float x);
/*function main begins*/
int main(void)
{
float x;
float y;
printf(“Please enter the x(-1 to end):”);
scanf(“%f”,&x);
y=roundtointeger(x);
printf(“x floor\n”);
printf(“%.2f%10.2f\n”,x,y);
return 0;
}
float roundtointeger(float x)
{
return floor(x*10+0.5)/10;
}
运行时,输入1.05,最终转换出来的结果是1.00,为什么不是1.10呢,搞不懂,请各位前辈指教.
>> 本文固定链接: http://www.vcgood.com/archives/3111
没有人指导一下啊,好可怜…
应该是 float 和 double 类型转换的问题,程序改为如下则结果为 1.10
#include<stdio.h>
#include<math.h>
float roundtointeger(double x);
/*function main begins*/
int main(void)
{
double x;
float y;
printf(“Please enter the x(-1 to end):”);
scanf(“%lf“,&x);
y=roundtointeger(x);
printf(“x floor\n”);
printf(“%.2lf%10.2f\n”,x,y);
return 0;
}
float roundtointeger(double x)
{
return floor(x*10+0.5)/10;
}
等我仔细研究一下 float 和 double 类型之间的转换再给出细节解释吧。
呵呵……