首页 > 用户发贴区 > 编程问题提问区 > 请教一个关于floor()函数的问题
2009
03-25

请教一个关于floor()函数的问题

#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呢,搞不懂,请各位前辈指教.


请教一个关于floor()函数的问题》有 2 条评论

  1. 千月星痕 说:

    没有人指导一下啊,好可怜…

  2. whos 说:

    应该是 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 类型之间的转换再给出细节解释吧。

    呵呵……

留下一个回复