社区
C语言
帖子详情
c语言中关于有效数字的问题
zhaoquan74
2002-06-06 10:47:15
在C语言中,有效数字的含义是什么,对于FLOAT型的数,C语言的书一讲了有7的有效数字。但如0.0001058954,它的有效数字是什么。如果还有一个FLOAT型数0.0001058955,它们的比较结果是什么?
...全文
496
4
打赏
收藏
c语言中关于有效数字的问题
在C语言中,有效数字的含义是什么,对于FLOAT型的数,C语言的书一讲了有7的有效数字。但如0.0001058954,它的有效数字是什么。如果还有一个FLOAT型数0.0001058955,它们的比较结果是什么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jiang_nan
2002-06-06
打赏
举报
回复
float的有效位数是7位,小数点下为6位,因此0.0001058954的有效数字是0.000105
0.0001058964和0.0001058964这两个数字在分别赋值给两个float型变量后的值应该是相等的.
dgj
2002-06-06
打赏
举报
回复
我的结论是写程序马虎不得,重要的地方一定要自己动手测试,千万不能想当然。
dgj
2002-06-06
打赏
举报
回复
这是我的测试代码和结果,你看一下吧:
int main()
{
float f1;
float f2;
printf("--------------test 1 -------------\n");
printf("f1=0.0001058954,f2=0.0001058955;\n");
f1 = 0.00010589544;
f2 = 0.00010589545;
printf("f1=%.20f\n",f1);
printf("f2=%.20f\n",f2);
if(f1==f2)
{
printf("f1==f2\n");
}
else
{
printf("f1!=f2\n");
}
printf("--------------test 2 -------------\n");
printf("f1=0.00010589544,f2=0.0001058943;\n");
f1 = 0.00010589544;
f2 = 0.00010589543;
printf("f1=%.20f\n",f1);
printf("f2=%.20f\n",f2);
if(f1==f2)
{
printf("f1==f2\n");
}
else
{
printf("f1!=f2\n");
}
printf("--------------test 3 -------------\n");
printf("f1=0.00010589544,f2=0.0001058944;\n");
f1 = 0.00010589544;
f2 = 0.00010589544;
printf("f1=%.20f\n",f1);
printf("f2=%.20f\n",f2);
if(f1==f2)
{
printf("f1==f2\n");
}
else
{
printf("f1!=f2\n");
}
printf("--------------test 4 -------------\n");
printf("f1=0.000105895441,f2=0.00010589442;\n");
f1 = 0.000105895441;
f2 = 0.000105895442;
printf("f1=%.20f\n",f1);
printf("f2=%.20f\n",f2);
if(f1==f2)
{
printf("f1==f2\n");
}
else
{
printf("f1!=f2\n");
}
printf("--------------test 5 -------------\n");
printf("f1=0.000105895441,f2=0.00010589444;\n");
f1 = 0.000105895441;
f2 = 0.000105895444;
printf("f1=%.20f\n",f1);
printf("f2=%.20f\n",f2);
if(f1==f2)
{
printf("f1==f2\n");
}
else
{
printf("f1!=f2\n");
}
printf("--------------test 6 -------------\n");
printf("f1=0.000105895441,f2=0.00010589445;\n");
f1 = 0.000105895441;
f2 = 0.000105895445;
printf("f1=%.20f\n",f1);
printf("f2=%.20f\n",f2);
if(f1==f2)
{
printf("f1==f2\n");
}
else
{
printf("f1!=f2\n");
}
printf("--------------test 7 -------------\n");
printf("f1=0.000105895441,f2=0.00010589446;\n");
f1 = 0.000105895441;
f2 = 0.000105895446;
printf("f1=%.20f\n",f1);
printf("f2=%.20f\n",f2);
if(f1==f2)
{
printf("f1==f2\n");
}
else
{
printf("f1!=f2\n");
}
printf("--------------test 8 -------------\n");
printf("f1=0.000105895441,f2=0.00010589447;\n");
f1 = 0.000105895441;
f2 = 0.000105895447;
printf("f1=%.20f\n",f1);
printf("f2=%.20f\n",f2);
if(f1==f2)
{
printf("f1==f2\n");
}
else
{
printf("f1!=f2\n");
}
printf("--------------test 9 -------------\n");
printf("f1=0.000105895441,f2=0.00010589448;\n");
f1 = 0.000105895441;
f2 = 0.000105895448;
printf("f1=%.20f\n",f1);
printf("f2=%.20f\n",f2);
if(f1==f2)
{
printf("f1==f2\n");
}
else
{
printf("f1!=f2\n");
}
}
[guest@sunserver/export/home/guest/volee/test]$gcc a.c
[guest@sunserver/export/home/guest/volee/test]$./a.out
--------------test 1 -------------
f1=0.0001058954,f2=0.0001058955;
f1=0.00010589543671812862
f2=0.00010589545127004385
f1!=f2
--------------test 2 -------------
f1=0.00010589544,f2=0.0001058943;
f1=0.00010589543671812862
f2=0.00010589542944217101
f1!=f2
--------------test 3 -------------
f1=0.00010589544,f2=0.0001058944;
f1=0.00010589543671812862
f2=0.00010589543671812862
f1==f2
--------------test 4 -------------
f1=0.000105895441,f2=0.00010589442;
f1=0.00010589544399408624
f2=0.00010589544399408624
f1==f2
--------------test 5 -------------
f1=0.000105895441,f2=0.00010589444;
f1=0.00010589544399408624
f2=0.00010589544399408624
f1==f2
--------------test 6 -------------
f1=0.000105895441,f2=0.00010589445;
f1=0.00010589544399408624
f2=0.00010589544399408624
f1==f2
--------------test 7 -------------
f1=0.000105895441,f2=0.00010589446;
f1=0.00010589544399408624
f2=0.00010589544399408624
f1==f2
--------------test 8 -------------
f1=0.000105895441,f2=0.00010589447;
f1=0.00010589544399408624
f2=0.00010589544399408624
f1==f2
--------------test 9 -------------
f1=0.000105895441,f2=0.00010589448;
f1=0.00010589544399408624
f2=0.00010589545127004385
f1!=f2
liushmh
2002-06-06
打赏
举报
回复
0.0001058954 有效数字 为0。0001058
C语言的书 有关有效数字,好像还有另外几种表示法。
比较结果为相等
C语言
100个算法经典例题
在
C语言
中
,通过循环结构可以生成由1至4组成的无重复数字的三位数。这涉及到对于数字的随机生成以及判断是否重复的技术。 #### 知识点二:企业利润计算(程序2) 使用`switch`语句来计算企业的利润,这可能涉及到...
《Objective-C程序设计(第6版)》
1. Objective-
C语言
概述:这本书从零基础出发,详细介绍了Objective-
C语言
和面向对象程序设计模式,使初学者能够快速且有效地学习。 2. 面向对象编程:本书深入讲解了类、对象以及方法等面向对象编程的基本概念,...
c语言
确定
有效数字
程序,
C语言
中
,
有效数字
怎么解释?
题目:
C语言
中
,
有效数字
怎么解释?解答:就是保留几位小数啊 再答: %.2f就是保留两位再问: 2.36486保留3位
有效数字
是多少?再答: 2.36再问: 不是小数点以后3位吗?再答: 你说的是
有效数字
,再答: 小数点以后3位...
(每日一练
c语言
)
有效数字
有效数字
有效数字
(按顺序)可以分成以下几个部分: 一个小数或者整数 (可选)一个'e'或'E',后面跟着一个整数 小数(按顺序)可以分成以下几个部分: (可选)一个符号字符('+'或'-') 下述格式之一: ...
C语言
:保留n位
有效数字
c语言
保留n位
有效数字
输出的时候用%.ng(.后面不要加f了)
C语言
70,037
社区成员
243,243
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章