社区
C语言
帖子详情
这两个变量,怎么会不相等呢?
william0218
2008-05-13 11:55:05
有两个float 型的变量mu , muprev
printf("mu = %3.9f\n",mu);
printf("muprev = %3.9f\n",muprev);
if(mu == muprev) goto S10;
在程序里面输出的结果都是 0.000000000。
可是在下面的那个判断中却认为不相等,没有跳到S10。感觉太诡异了,请明白的朋友帮忙看看,谢谢!
...全文
299
23
打赏
收藏
这两个变量,怎么会不相等呢?
有两个float 型的变量mu , muprev printf("mu = %3.9f\n",mu); printf("muprev = %3.9f\n",muprev); if(mu == muprev) goto S10; 在程序里面输出的结果都是 0.000000000。 可是在下面的那个判断中却认为不相等,没有跳到S10。感觉太诡异了,请明白的朋友帮忙看看,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
23 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
woshizhouqi
2008-05-18
打赏
举报
回复
程序代码出错了。。。。。。。。。
woshizhouqi
2008-05-18
打赏
举报
回复
程序代码出错了。。。。。。。。。
woshizhouqi
2008-05-18
打赏
举报
回复
程序代码出错,导致运行错误。。。。。。。。。。
0.00000000是随机值,事实上两个树不等。。。
帅得不敢出门
2008-05-18
打赏
举报
回复
楼主建议你去看下 float型与0值的比较 直接用=与!=来与0相比较是不行的
laden45
2008-05-18
打赏
举报
回复
学习中~
arong1234
2008-05-18
打赏
举报
回复
跟地址有什么关系?都是打印值
[Quote=引用 22 楼 lockhall 的回复:]
是啊,我上次也遇到过这样写的.
第二个打印的是地址,
第一个是?
引用 21 楼 arong1234 的回复:
估计你使用的是不定参数?这是有可能的。不定参数不会替你做类型转换,加入你用int型传浮点数进去,就会如此
例如:
int a = 10;
float b=10;
printf("a=%f, b=%f", a,b);
你就可能看到很有趣的结果
引用 12 楼 woshizhouqi 的回复:
程序代码出错,导致运行错误。。。。。。。。。。
0.00000000…
[/Quote]
lockhall
2008-05-18
打赏
举报
回复
是啊,我上次也遇到过这样写的.
第二个打印的是地址,
第一个是?
[Quote=引用 21 楼 arong1234 的回复:]
估计你使用的是不定参数?这是有可能的。不定参数不会替你做类型转换,加入你用int型传浮点数进去,就会如此
例如:
int a = 10;
float b=10;
printf("a=%f, b=%f", a,b);
你就可能看到很有趣的结果
引用 12 楼 woshizhouqi 的回复:
程序代码出错,导致运行错误。。。。。。。。。。
0.00000000是随机值,事实上两个树不等。。。
[/Quote]
arong1234
2008-05-18
打赏
举报
回复
估计你使用的是不定参数?这是有可能的。不定参数不会替你做类型转换,加入你用int型传浮点数进去,就会如此
例如:
int a = 10;
float b=10;
printf("a=%f, b=%f", a,b);
你就可能看到很有趣的结果
[Quote=引用 12 楼 woshizhouqi 的回复:]
程序代码出错,导致运行错误。。。。。。。。。。
0.00000000是随机值,事实上两个树不等。。。
[/Quote]
arong1234
2008-05-18
打赏
举报
回复
double也有同样的问题,只是你不会搞出来。因为double有15位精度,如果你用%16lf打印,就可以出现类似问题
[Quote=引用 7 楼 fuqd273 的回复:]
附注:double型无此问题。
[/Quote]
ab0029
2008-05-18
打赏
举报
回复
学习学习!!
iambic
2008-05-18
打赏
举报
回复
include了正确的头文件没有?
iloveu365999
2008-05-18
打赏
举报
回复
计算机语言的这点是比较麻烦的,要弄清楚可要明白计算机的运算原理呀!
fuqd273
2008-05-14
打赏
举报
回复
不知道你怎么操作的,怎么看到你认为的结果的,怎么得到你的结论的。
请具体说明你的测试步骤。
oyxiaoyu0
2008-05-13
打赏
举报
回复
对这属于机器精度转换问题.
if((mu-muprev)<0.000001) goto S10
就认为是相等了
fuqd273
2008-05-13
打赏
举报
回复
float型的变量不能这么比较。
举例来说,你把mu和0进行比较的话,是永远不会相等的,只能做下面的判断:
if (mu < FLOAT_MIN && mu > -FLOAT_MIN ) {
...
}
其中,FLOAT_MIN 是误差值,可以是0.000000001之类的小数。
类似的,你要比较2个float数,做差之后,用我上边给出的方法判断吧。
Treazy
2008-05-13
打赏
举报
回复
浮点数类型的缺陷
虽然printf输出的是一样
但是这2个数可能就是不同的!
0.9999999999999可能为1
1.0000000000001也可能为1
c_spark
2008-05-13
打赏
举报
回复
浮点数精度问题,float类型只能精确到小数点后六位
babyvox1999
2008-05-13
打赏
举报
回复
浮点数判断相等要用一个范围判断 如|a-b|<0.00001
william0218
2008-05-13
打赏
举报
回复
谢谢楼上各位的回复,这段代码是ranlib.c里面的一小段,只是里面的输出是我自己加进去的,我在程序里面调用ignpoi()函数时会经过这段代码。问题诡异之处在于,我在不同的地方调用这个函数时,虽然穿进去的值是相同的(我对传入的参数也做过输出,10.000000000),可是一旦到了ignpoi()函数内部,传入的参数就变成了0.00000000,而且,可是在比较这两个值是否相等时,却出现不同的结果,就是说,第一次调用时比较是相同的,第二次调用时比较是不同的。不知道我说没说明白。
fuqd273
2008-05-13
打赏
举报
回复
数据存储格式相关。
建议去查一下谭浩强的C语言,记得里面有解释。
加载更多回复(3)
python判断字符串
相等
_如何在python语言中判断
两个
变量
或字符串
相等
本文介绍了Python中使用==和is进行
变量
比较的方法,并通过实例演示了如何判断
变量
是否
相等
或不
相等
。同时,还解释了isnot的作用。
C语言判断10个
变量
互不
相等
,怎样用c语言表示几个数任意
两个
不
相等
,这
两个
相等
吗?...
本文介绍了如何使用C语言通过桶排序算法来表示并验证多个数任意
两个
不
相等
,特别提到该方法适用于整数,并提供了详细的步骤和代码示例。同时,探讨了如何利用桶排序进行数字排序,包括数字分桶、元素分布与收集的过程。
数值相同的
变量
为何判断为不
相等
?
本文详细解析了在SAS编程中,由于
变量
长度不同导致看似
相等
的数值被误判为不
相等
的现象,并提供了解决方案。通过使用trunc函数截断
变量
长度,确保了数值比较的准确性。
matlab中if语句判断
两个
变量
是否
相等
,打印输出
两个
变量
相等
,但if语句就是不执行,why?
博主在程序中遇到一个if语句判断浮点数
相等
问题,初始直接判断
相等
时,条件不成立,导致
变量
值未更新。在大神的指导下,了解到由于浮点数精度问题,即使看似
相等
的
两个
数实际上可能并不完全相同。通过设置一个小的误差范围进行比较,问题得到解决。博主建议在处理浮点数
相等
判断时要注意精度问题。
在SQL Server中查询
两个
表多个字段不
相等
的SQL语句
本文详细介绍了在SQL Server中如何编写查询
两个
表中多个字段不
相等
的SQL语句。通过创建示例表、插入测试数据,并使用NOT EXISTS子句来实现这一需求,最终得出适用于大量数据的查询方法。
C语言
70,039
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章