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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 失眠的咖啡 于 2015-8-19 10:27 编辑


这个运行结果是3.100000


这个运行有个疑问,请求大神解惑一下,运行的结果不应该是3.100000?(小数点后7位),?表示不是有效数字(数值我也不晓得是多少),为什么是3.0999999这样的结果!

4 个回复

倒序浏览
我这样理解不知道对不对,
float为浮点数,有效小数位数为6位,1.0在计算机中可能存为0.999999或1.00001等,很难恰好是1.0
运行断点调试,输入3.1111111111  
scanf(”%f“,dd)  dd的值是3.1111112
scanf("%3f",dd) dd的值是3.1 存储在计算机中就是3.0999999
输出是,四舍五入,%3.6f为3.100000
%3.7f,完全满足float长度,不用四舍五入,所以为3.0999999
回复 使用道具 举报 1 0
leqoqo 发表于 2015-8-18 15:35
我这样理解不知道对不对,
float为浮点数,有效小数位数为6位,1.0在计算机中可能存为0.999999或1.00001等, ...

我也不知道!感觉你说的好有道理!不管怎样,谢谢了!
回复 使用道具 举报
视频讲解里有这一问题的说明,
回复 使用道具 举报
leqoqo 发表于 2015-8-18 15:35
我这样理解不知道对不对,
float为浮点数,有效小数位数为6位,1.0在计算机中可能存为0.999999或1.00001等, ...

运算了一下其他的数据,感觉你说的应该是对得.....
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马