黑马程序员技术交流社区

标题: 关于scanf函数的一些问题 [打印本页]

作者: 失眠的咖啡    时间: 2015-8-18 11:20
标题: 关于scanf函数的一些问题
本帖最后由 失眠的咖啡 于 2015-8-19 10:27 编辑


这个运行结果是3.100000


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

作者: leqoqo    时间: 2015-8-18 15:35
我这样理解不知道对不对,
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
作者: 失眠的咖啡    时间: 2015-8-19 09:59
leqoqo 发表于 2015-8-18 15:35
我这样理解不知道对不对,
float为浮点数,有效小数位数为6位,1.0在计算机中可能存为0.999999或1.00001等, ...

我也不知道!感觉你说的好有道理!不管怎样,谢谢了!
作者: tangbinbin    时间: 2015-8-19 10:07
视频讲解里有这一问题的说明,
作者: 失眠的咖啡    时间: 2015-8-19 10:14
leqoqo 发表于 2015-8-18 15:35
我这样理解不知道对不对,
float为浮点数,有效小数位数为6位,1.0在计算机中可能存为0.999999或1.00001等, ...

运算了一下其他的数据,感觉你说的应该是对得.....




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