【发布时间】:2011-12-17 10:27:29
【问题描述】:
我有两个值(浮点数),我试图将它们加在一起并取平均值。我遇到的问题是,这些值有时会加起来为零,因此不需要对它们进行平均。
我所处的情况具体包含值“-1”和“1”,但当加在一起时,我得到的值是“-1.19209e-007”,显然不是 0。有这方面的信息吗?
【问题讨论】:
-
你永远不能测试浮点值是否相等(就像你在这里所做的那样,用
0检查是否相等)。谷歌搜索(甚至在这里搜索)会产生很多结果。 -
Uhmmm (a - a) / 2,如果 a 为 1,则为 0。总是。如果我们考虑舍入误差,它也不能产生除零以外的浮点数。你确定这是问题所在?
-
@SalvatorePreviti:不正确。 (a-a) 并不总是给浮点数 0,因为当寄存器中的浮点数存储到内存中时会发生舍入。
-
@MooingDuck 但肯定
(1.+ -1.)将始终完全为零,因为1.和-1.都可以精确表示(通常)。 -
@Rob 这些值表示正在摄取的文件中的 x 坐标值。在这种情况下,它们正好是 -1 和 1,但是存储在浮点数据类型中,因为它们并不总是这些值。
标签: c++ c floating-point