鱼C论坛

 找回密码
 立即注册
查看: 2076|回复: 2

[已解决]为什么输出结果存在误差?

[复制链接]
发表于 2017-10-10 16:28:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
运行图1程序时,输入1.2,结果输出f1=0.000000。好像格式控制符应与变量类型对应。还是不太理解为什么输出的为0.000000
   
运行如图2,为什么结果为28.000000,存在舍入误差的原因是?
求助

最佳答案
2017-10-10 17:57:26
图1:用double的大小数据覆盖float大小的内存块,写进去的是什么东西只有Scanf()知道!不一定是0的!搞不好会破坏栈!!
图2:(29.0 * 0.01)对于计算机浮点数计算都存在误差!!算出来可能是28.999999也可能是29.00001, 强转int之后去掉小数点后面的数据

图1

图1

图2

图2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-10-10 16:35:50 | 显示全部楼层
这是计算机的“特性”。
不用在意这些细节,计算机浮点数都有这样的误差。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-10 17:57:26 | 显示全部楼层    本楼为最佳答案   
图1:用double的大小数据覆盖float大小的内存块,写进去的是什么东西只有Scanf()知道!不一定是0的!搞不好会破坏栈!!
图2:(29.0 * 0.01)对于计算机浮点数计算都存在误差!!算出来可能是28.999999也可能是29.00001, 强转int之后去掉小数点后面的数据
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-28 16:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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