| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 975 人关注过本帖
标题:请教,关于实型数据的四舍五入,
只看楼主 加入收藏
csz9981
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2013-5-16
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
请教,关于实型数据的四舍五入,
#include<stdio.h>
main()
{
    float a,b;
    a=123456.789e5;
    b=a+20;
    printf("%f\n",a);        /*结果1 1234567848.000000 */
    printf("%f\n",b);          /*结果2 1234567848.000000 */
    printf("%f\n",1.0/3);      /*结果3 0.333333 */
 printf("%f\n",1.0/3*3);     /*结果4 1.000000 */
}

上面这个程序,我用C-FREE 5.0运行了,得到了/*  */里面的结果,
1、为什么结果1与结果2是一样的?
2、书上说,1/3*3,结果/=1.0的呀,

所以请教。
2016-12-10 21:31
neebla
Rank: 2
等 级:论坛游民
帖 子:16
专家分:29
注 册:2016-12-8
收藏
得分:10 
float型只支持7位有效数字,对于a来说,也就是1234567这前面的7位是有效的,后面89就是一个不精确的数字了。

[此贴子已经被作者于2016-12-10 23:02编辑过]

2016-12-10 22:52
csz9981
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2013-5-16
收藏
得分:0 
感谢,书上也是这么说的,
2016-12-11 19:02
纵横阳仔
Rank: 7Rank: 7Rank: 7
来 自:自学成才的火星人儿
等 级:贵宾
威 望:26
帖 子:147
专家分:698
注 册:2016-10-20
收藏
得分:10 
float的小数部分默认有6位。
printf("%.1f\n",1.0/3*3);//对输出精度进行限制。
如果这样修改,结果就变成1.0了。
2016-12-11 20:28
快速回复:请教,关于实型数据的四舍五入,
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016128 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved