C语言中的菜鸟问题.可惜我不知道.知道的说下.

.额,我写了以下程序段:#definequnimade3.61main(){float_9u,u9_;_9u=1.234e1;u9_=_9u*qunimade;print... .额,我写了以下程序段:
#define qunimade 3.61
main()
{
float _9u, u9_;
_9u=1.234e1; u9_=_9u*qunimade;
printf("ni jiu shi niao = %f",u9_);
}

结果应该是44.5474 可编译系统的结果是44.547401
后面的01是哪来的???
(编译系统是TC)
.额,系统误差?
实型数据中 系统会分配4Byes给float.(单精度float有效位应为6-7位.float与double的区别在于 显示的有效位数与指数部分显示范围的不同而已.) 1.234e1是实型常量的指数形式,可以用以float嘛.难道是因为float显示的有效位数不够,才说要用double?
.照你们说的,是不是说 32位的float中,有效数给24位,指数给8位.那要输怎样的数才不会有这后面多余的部分呢?
展开
 我来答
忘至白葬不情必0T
2008-09-25 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:90%
帮助的人:1.2亿
展开全部
float只有6位有效数字.
原因是计算机中数据是2进制存储的,而且浮点数还有单独的存储格式,44.5474转成二进制时不可能恰好转成一个有限位数的二进制数,就算能,位数可能也超过了浮点数存储格式中允许的位数.因此44.5474在计算机中存储的其实并不是44.5474,而是一个和它很接近的数,这个数和它的误差一般在小数后5,6位左右出现,所以一般来说float有效数字只有6位.
courain
2008-09-25
知道答主
回答量:40
采纳率:0%
帮助的人:0
展开全部
系统自动产生,因为C语言系统的默认有效数据是8位
编程时可以利用一些语句控制有效数字个数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风魂永恒
2008-09-25 · 超过13用户采纳过TA的回答
知道答主
回答量:66
采纳率:0%
帮助的人:0
展开全部
1.234e1的值是double型的,6个小数
把float _9u,u9_;改为:double _9u,u9_;
结果就对了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2008-09-25
展开全部
后面的很小的数字是由于机器电气等方面的原因导致的误差,属于不可控的正常现象。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2008-09-26
展开全部
应该是float这里出的问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式