比较两个double数的问题

seacool 2003-10-16 09:48:05
if (d1 > d2)
return 1;
else if (fabs(d1-d2)<0.0000001)
return 0;
else
return -1;

当d1 = d2 = 469810324.0900 时,d1 > d2 竟然为真!
d1、d2都是double型的,VC++ 6.0
请问这是为什么呀?
...全文
92 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zoohoo 2003-10-17
  • 打赏
  • 举报
回复
浮点型的比较需要应该同一个极小值做比较。
gy_hong 2003-10-16
  • 打赏
  • 举报
回复
好像经产见到用一个很小的数代替0进行比较,但一直不知道为什么?
不过我在我的机子上试了,d1>d2为假呀??!!
fwinfwin 2003-10-16
  • 打赏
  • 举报
回复
不可以直接比较的,你下面都知道加各界定符号!
if (fabs(d1-da)>0.000001)
return 1;
else if (fabs(d1-d2)<0.0000001)
return 0;
else
return -1;

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧