注册 登录
编程论坛 C语言论坛

float 类型变量想精准两位 可是直接打印可以 赋给变量就不行了 帮忙看看怎么解决

dyp2820 发布于 2020-02-28 21:36, 1174 次点击
#include <stdio.h>
float fun ( float  h )
{
    float c;
    c = (int)(h*100+0.5)/100.0;
    printf("inner_:%f\n",(int)(h*100+0.5)/100.0);//结果是2021.990000
    printf("inner:%f\n",c);//结果是2021.989900
    return c;
}
int main(){
    float a = 2021.9899;
    printf("%f\n",fun(a));
    printf("outer:%f\n",(int)(a*100+0.5)/100.0);
    return 0;
}
3 回复
#2
forever742020-02-28 21:47
浮点常量和浮点表达式默认是double类型的,
而赋值给float变量以后它就退化成float的精度了。
#3
forever742020-02-28 21:51
你可以把float都换成double试试
#4
吹水佬2020-02-29 08:03
printf("inner:%f\n",c);//结果不是2021.989900,是2021.989990
只有本站会员才能查看附件,请 登录
1