Floating point (b-a)和#x2B;a!=b完全是浮点数

Floating point (b-a)和#x2B;a!=b完全是浮点数,floating-point,Floating Point,我在一条线上写了一些代码,我努力从输入中节省最大的精度。我是否必须保持线段两端的坐标,或者起点和长度是否足够?如果我想保持当前良好的体系结构,我必须有长度,因此我希望省略右端 或如问题中所述: 假设我有0来扩展我的评论,我测试了小分数到n的极限,即。 a_i=i/n,i=1..n和b_j=j/n,j=i+1..n。似乎大约4。。5%的测试用例表示相等失败。以下是一些数字: n failed tested f/t 10 2 55 0.0

我在一条线上写了一些代码,我努力从输入中节省最大的精度。我是否必须保持线段两端的坐标,或者起点和长度是否足够?如果我想保持当前良好的体系结构,我必须有长度,因此我希望省略右端

或如问题中所述:


假设我有
0来扩展我的评论,我测试了小分数到n的极限,即。
a_i=i/n,i=1..n
b_j=j/n,j=i+1..n
。似乎大约4。。5%的测试用例表示相等失败。以下是一些数字:

   n   failed    tested     f/t
  10        2        55    0.036
  50       48      1275    0.038
 100      204      5050    0.040
 127      383      8128    0.047
2047   114752   2096128    0.055

n=10的失败案例是
a=2/10,b=9/10
a=3/10,b=9/10
(b-a)+a!=b+(-a+a)=b
。关于SO的例子已经很多了:,,@phuclv这个问题的答案也可以是非结合性的答案,但不一定相反。如果你认为链接问题中的一些例子可以用来为这个问题构建一个例子,请继续并提供一个答案,因为我相信这是一个不同的问题。这与我在上面证明的问题相同,
(b-a)+a
仅当它等于
b+(-a+a)
时才等于
b
,只有当浮点数学是有关联的,而浮点不是“从不关联”时,这才是令人满意的,当它是有关联的时候,有一些例子(比如说1.0+2.0+3.0,或者说足够小的整数)。我的问题比一般情况下的问题更具局限性(简而言之,如果你认为我的问题那么简单,请给我举个例子)。这里是IEEE-binary64的一个例子(如果我没有犯任何错误):如果
a=1/7=3FE2492492492492
b=5/7=3FE6DB6DB6DB6DB7
,那么
(b-a)+a=3FE6DB6DB6DB6DB6