黑马程序员技术交流社区

标题: 四舍五入的问题 挠头了 求解 [打印本页]

作者: 该有个目标了    时间: 2014-8-20 11:07
标题: 四舍五入的问题 挠头了 求解
#include<stdio.h>

int main()
{
    float i = 23.4573246;//结果 23.45999  
    int j = i *100 +0.5;
    float k = (float)j/100;
    printf("%f",k);
   
    return 0;
}

#include <stdio.h>
int main()
{
    float i = 24.35689;   //结果 24.36000
    int j = i *100 +0.5;
    float k = (float)j/100;
    printf("%f",k);
   
   
    return 0;
}

同样的句子 结果 咋就不一样???????晕了。


作者: 潘多拉    时间: 2014-8-20 12:06
首先强制转换跟自动转换你没注意到,主函数第二句里浮点型数据赋给了int型变量j,损失精度,第三句强转过程中也应该是注意优先级吧,结果肯定不一样!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2