标题:C语言的单精度和双精度的尖端问题。
只看楼主
bangongwenda
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-7-15
结帖率:0
已结贴  问题点数:20 回复次数:3 
C语言的单精度和双精度的尖端问题。
问大家一下,

#include<stdio.h>
void main()
{
 float a=0.65f;
 float b=0.6f;
 float c=a-b;
 printf("结果是:%.25e\n",c);
}



#include<stdio.h>

void main()

{

       float a;

       printf("请输入数字:");

       scanf("%e",&a);

       printf("结果是:%.25e\n",a);

 

}

请输入数字:2.2e-2

结果是:2.1999999880790710000000000e-002

Press any key to continue


如何让上述中的结果分别显示为 5.00-002 和 2.20e-2 即用“四舍五入”的方法来显示出来。

用多种方法来实现上述问题的结果。谢谢。
搜索更多相关主题的帖子: continue C语言 如何 
2013-07-15 18:39
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:7 
第一段 printf("结果是:%.2e\n",c);
第二段 printf("结果是:%.2e\n",a);

不过,“四舍五入”是很难的。这么说吧,
一般的CPU使用的进位模式都是“四舍六入五成双”,所以一般的编译器在这里都是“四舍六入五成双”,而VC不知道怎么搞的,使用的又是“四舍五入”。
2013-07-16 08:18
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
得分:7 
至于编译器不同而产生不同的结果,这个无法解释,自己百度了解自己使用的编译器的精度即可

思考赐予新生,时间在于定义
2013-07-16 08:51
浪漫横行
Rank: 4
等 级:业余侠客
威 望:1
帖 子:127
专家分:291
注 册:2013-4-30
得分:7 
编译器的精度是不同的,不同编译器产生的结果肯定是有误差的,不可能很准确的。。
2013-07-17 11:26



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-417385-1-1.html




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

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