是 - B + C - d = A + C - B - ð数学上正确?
我认为这种说法可能是正确的,但只是偶尔,如果评估的顺序并不重要,所以如果我是做{(A - B)+ C} - d和选择,将计算结果为数字{(A + C) - B } - d其中,b和c均为相同的数字,那么这可能是正确的。
对此有一个更数学和逻辑的解释吗?
我也觉得有关联的事,但会证明,这种说法是正确的从来没有因为加法和乘法是联想(单独),而不是加法和减法一起
这在很大程度上取决于+
和-
的定义。到目前为止,你已经写了,他们不过是自由无类型中缀符号,因此很难说。
一个简单的例子。假设值是固定宽度的浮点类型的(如那些在IEEE-754中定义的一个,例如)。接下来,如果我们有
a = 10e100
b = -10e-100
c = -10e100
d = -10e-100
和表达式求贪婪左到右,然后
a - b + c - d = ((a - b) + c) - d
当类型有足够的序位以包含-100和100十进制订单,但其尾数是不足够宽,以正确地表示10e100 + 10e-100
,具体地,RHS参数被简单地丢失在该表达式中,然后将整个大表达式的值是
((10e100 - -10e-100) + -10e100) - -10e-100 =
= (10e100 + -10e100) - -10e-100 = 0 - -10e-100 = 10e-100
但第二个表达式将评估为
((a + c) - b) - d = ((10e100 + -10e100) - -10e-100) - -10e-100 = 20e-100
所以你看,结果可根据评估的顺序由100%不等。