设为首页 加入收藏

TOP

13.6.2 ==在浮点比较中的含义
2013-10-07 00:54:31 来源: 作者: 【 】 浏览:70
Tags:13.6.2 浮点 比较 含义

13.6.2  ==在浮点比较中的含义

在整数中,一般使用==操作符判断两个数是否相等,而且浮点运算中也存在==操作符,那么使用==判断两个浮点数是否相等有问题吗?反汇编下列语句:

  1. a == b 
得到下列x87 FPU代码:
  1. FLD     QWORD PTR [EBP-8]  
  2. FCOMP   QWORD PTR [EBP-10h] 

要想结果是TRUE,a和b在浮点格式的精度限制内必须严格相等。这意味着,一般情形下(0除外),浮点格式中的每一个位都必须相等。如果a和b是float,那么对于一般数而言,上述语句与下列语句等效:

  1. *(int*)&a == *(int*)&b 
由于上一节所述的误差存在,即使是同一意义上的值,由于来源不同(如果来源相同,还需要比较吗?),判断几乎不可能为TRUE。换句话说,在浮点计算中,==的作用是比较两个浮点数是否具有完全相同的格式数据,而不是一般数学或工程意义上的相等。
【责任编辑:董书 TEL:(010)68476606】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇13.8 快速平方根和平方计算(1) 下一篇13.7 通过参数的数据共享问题

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: