幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2737|回复: 3

[通用编程] 关于输出的问题

[复制链接]

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
发表于 2006-12-12 16:03:45 | 显示全部楼层 |阅读模式
程序如下:
main()
{
float x=234.89;
printf("%f\n",x);
printf("%08.3e%.3e\n",x,x);
}

为什么其输出的答案是x=234.889999而不是x=234.890000呢?后面的不是补上零就可以了吗?
为什么下面的一个输出答案都是2.35e+02呢?对于%08.3e这个不是应该前面加零吗?
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复

使用道具 举报

1

主题

19

帖子

656

积分

⑤进阶

大猫

积分
656
QQ
发表于 2007-2-8 14:26:51 | 显示全部楼层
关于单精度浮点数在计算机中的表示,忘了,楼主查查资料吧
计算机想法和人不一样,它不懂得加0哈 [s:5]
回复 支持 反对

使用道具 举报

10

主题

93

帖子

1065

积分

⑥精研

积分
1065
QQ
发表于 2007-2-14 19:20:57 | 显示全部楼层
第一个问题我也碰过~改成double就可以了~float的有效位理论上来说是7位~实际使用并不精确~但不代表不准确~因为234.889999是约等于234.89的~输出的位如果超过了7位就会出现错误~7位以内还是正确的

以指数的形式输出就不太清楚了~几乎没用过这个
回复 支持 反对

使用道具 举报

50

主题

742

帖子

402

积分

版主

自定义头衔

Rank: 7Rank: 7Rank: 7

积分
402
发表于 2007-2-14 22:07:48 | 显示全部楼层
补零应该是对整数起作用巴……08大概被无视了?

.3的确是保留三个有效数字…… [s:4]
Style-C
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-5-1 05:30 , Processed in 0.026201 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表