免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5476 | 回复: 12
打印 上一主题 下一主题

两个浮点型比较,请问有没有好办法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-10-19 09:57 |只看该作者 |倒序浏览
原来想法是:
在函数参数中加入要比较的最长小数位,然后按10的倍数转换成long再比较,但总觉得这种强制转换的方式不太理想。

请问各位有没有其它的办法,谢谢!

论坛徽章:
0
2 [报告]
发表于 2004-10-19 10:02 |只看该作者

两个浮点型比较,请问有没有好办法

刚才忘记说明了待比较的数据是double型的

论坛徽章:
0
3 [报告]
发表于 2004-10-19 10:42 |只看该作者

两个浮点型比较,请问有没有好办法

一般是这样的吧

  1. if (a - b >; 0.001)
  2.    /*a >; b*/
  3. else if (b - a >; 0.001)
  4.    /*a < b*/
  5. else
  6.    /*a == b*/
复制代码

论坛徽章:
0
4 [报告]
发表于 2004-10-19 11:03 |只看该作者

两个浮点型比较,请问有没有好办法

[quote]原帖由 "unicorns"][/quote 发表:


我以前的程序也是这样写,但不定时会出错。我想可能是双精度的尾数的问题。

现在我又改为通过把double写到字符串的方式进行比较。这种方法不会出错但比较土。

论坛徽章:
0
5 [报告]
发表于 2004-10-19 11:08 |只看该作者

两个浮点型比较,请问有没有好办法

这样会出错?
相信绝大多数人都是这样写的吧
你肯定是这里出错吗.
写成字符串比较,办法土没什么,就是效率影响太大了.

论坛徽章:
0
6 [报告]
发表于 2004-10-19 11:16 |只看该作者

两个浮点型比较,请问有没有好办法

double a;
double b;
double diff;
....

diff = a-b;
if( fabs(diff) >; 0.000001 )
{
        ..... //相等
}
else
{
        .....//不相等
}

论坛徽章:
0
7 [报告]
发表于 2004-10-19 12:43 |只看该作者

两个浮点型比较,请问有没有好办法

原帖由 "unicorns" 发表:
这样会出错?
相信绝大多数人都是这样写的吧
你肯定是这里出错吗.
写成字符串比较,办法土没什么,就是效率影响太大了.


是的,我原来的程序是这样
if ((a - b) >;0.005)进行比较,然后发现两个相等的数值也常常报不等。后来加了头文件<math.h>;就好一些,但最近又发现有错。
  

论坛徽章:
0
8 [报告]
发表于 2004-10-19 13:15 |只看该作者

两个浮点型比较,请问有没有好办法

同意virmin。

论坛徽章:
0
9 [报告]
发表于 2004-10-19 13:22 |只看该作者

两个浮点型比较,请问有没有好办法

老问题了,学会论坛搜索功能。

论坛徽章:
0
10 [报告]
发表于 2004-10-19 17:20 |只看该作者

两个浮点型比较,请问有没有好办法

搜索过了,关键词为“浮点型”试了没有、“double”试了也没有。

哪位大吓对这个熟悉的能否给个新的方式。
通过fbas或者(a-b)>;0.005的方式,这种方式我知道,以前也有用过。但要提醒各位,如果用以上的方式比较在程序代码中一定要加上<math.h>;,否则是不对的。

谢谢各位!

原来我只是借这个问题想讨论一下,有没有其它的方式可以实现double的精确比较。如果哪位有其它的方法请赐教!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP