计算输出值不正确


bad value in calculation output

以下代码输出"3"。我以为是"1"

echo $resultado."'n"; // show 2
$valor = $resultado * ($resultado - 1 / 2);
echo $valor."'n"; // show 3, and should be 1

为什么会发生这种情况?

因为除法1 / 2在运算顺序上优先。所以你真的有这个表达式:

$resultado * ($resaltudo - (1 / 2))

你应该加上括号:

$resultado * (($resaltudo - 1) / 2)

不,你错了。/具有优先级-所以你的行就像:

$valor = $resultado * ($resultado - (1 / 2));

,即

$valor = 2 * (2 - 0.5); // and so $valor = 3

这是因为除法运算符(/)比减法运算符(-)具有更高的优先级。

你的表达式变成,按顺序:

1 / 2 = 0.5 // Executed first since it's the highest precedence operation inside ()
$resultado - 0.5 = 1.5 // Still in the ()
$resultado * 1.5 = 3 // Final result

要纠正表达式,在减法周围插入括号,如下所示:

$resultado * (($resultado - 1) / 2);

/优先于+或-要得到结果为1,您需要使用

$resultado * (($resultado - 1) / 2)

在表达式中替换$resultado,得到:

$valor = 2 * (2 - 1 / 2);
2 - 1 / 2 = 1.5
2 * 1.5 = 3

我的建议是复习基础数学;)

改为:

echo $resultado."'n";
$valor = $resultado * (($resultado - 1) / 2);
echo $valor."'n";

你在有效地做2 * (2 - (1 / 2) = 2 * 1.5 = 3

2*(2-1/2)

除法运算符的优先级比减号高,因此计算机将这样计算:2*(2-(1/2)) = 2* 1.5 = 3