搜索
查看: 2972|回复: 10
打印 上一主题 下一主题

float a=234.89; printf("%f",a);问为何输出234.889999

[复制链接]
楼主
发表于 2012-9-13 16:47:32 | 显示全部楼层
本帖最后由 Wuya 于 2012-9-23 21:03 编辑
190192641 发表于 2012-9-17 08:53
答案不满意
我知道怎么样才对
我要知道的是这样是怎么错的

我们先从 float 说起。C 标准规定,float 型浮点数至少能表示6位有效数字。
在默认情况下,格式控制符 "%f" 会取变量的6位小数,尽管你已经声明变量 a = 234.89,但是
printf 函数打印 a 的值受 "%f" 格式符控制,因此输出 a 的值为 234.889999。

为什么是 234.889999,而不是234.890000或者其它?
这与你所使用的具体计算机操作系统(32位或64位)有关。
另外,float 型数值都是实际值的近似,换句话说,它不能像 int 型数值那样能表示切确的值。

如果你还想进一步了解,你首先要去了解什么是计算机科学。
然后继续追问,相信你会找到满意的答案!

评分

参与人数 1啊哈币 +5 收起 理由
lzl + 5 赞一个!

查看全部评分

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表