如何识别一个数学表达式,并验证它的正确性评价的顺序?

问题描述 投票:0回答:1

是 - B + C - d = A + C - B - ð数学上正确?

我认为这种说法可能是正确的,但只是偶尔,如果评估的顺序并不重要,所以如果我是做{(A - B)+ C} - d和选择,将计算结果为数字{(A + C) - B } - d其中,b和c均为相同的数字,那么这可能是正确的。

对此有一个更数学和逻辑的解释吗?

我也觉得有关联的事,但会证明,这种说法是正确的从来没有因为加法和乘法是联想(单独),而不是加法和减法一起

addition subtraction associativity
1个回答
2
投票

这在很大程度上取决于+-的定义。到目前为止,你已经写了,他们不过是自由无类型中缀符号,因此很难说。

一个简单的例子。假设值是固定宽度的浮点类型的(如那些在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%不等。

© www.soinside.com 2019 - 2024. All rights reserved.