A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© M.W 中级黑马   /  2016-7-4 11:29  /  1490 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

%f输出精度问题
        float f1 = 3.1415926f;
        printf("f1 = %f\n",f1);-->3.1415923//默认输出小数点后6位
        printf("f1=%.7f\n",f1);-->3.1415925//注意,%f打印出来后,精度小数点后6位,有效数字是7位所以这边的5就是无效数字。
        所以使用floalt是打不出小数点后的第七位的。也就是有效数字后的数字是无效的
        float a = 1111.111111;
        foat b = 2222.22222;
        printf("a + b= %f\n", a+b); -->有效位数之后的数字(7位)都是无效的。

解决方案
        要打印更大精度的就只有使用double类型
        double默认的是精度小数点后7位,有效数字是15位。
        dobule d1 = 3.1415926;
printf("d1 = %.7f\n",d1);

1 个回复

倒序浏览
学习了!复习了下这个问题
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马