плохая ценность в выводе вычисления - PullRequest
0 голосов
/ 21 октября 2011

Следующий код выводит «3».Я ожидал «1».

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

echo $valor."\n"; // show 3, and should be 1

Почему это происходит?

Ответы [ 7 ]

3 голосов
/ 21 октября 2011

Поскольку деление 1 / 2 имеет приоритет в порядке операций. Итак, у вас действительно есть это выражение:

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

Вы должны добавить круглые скобки:

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

чтобы получить желаемый ответ.

1 голос
/ 21 октября 2011

/ имеет приоритет над + или - Чтобы получить 1 в результате, вам нужно использовать

$resultado * (($resultado - 1) / 2)
1 голос
/ 21 октября 2011

Это потому, что оператор деления (/) имеет более высокий приоритет, чем оператор вычитания (-).

Ваше выражение становится в следующем порядке:

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

Комуисправьте свое выражение, вставьте parethesis вокруг вычитания, как это:

$resultado * (($resultado - 1) / 2);
1 голос
/ 21 октября 2011

Нет, вы не правы. / Имеет приоритет - и ваша строка выглядит так:

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

и это:

$valor = 2 * (2 - 0.5); // and so $valor = 3
0 голосов
/ 21 октября 2011
* * 2 1000 * (2-1 / 2)

Оператор деления имеет более высокий приоритет оператора порядка, чем знак минус, поэтому компьютер вычислит его следующим образом: 2 * (2- (1/2)) = 2 * 1,5 = 3

Свободно используйте скобки.

0 голосов
/ 21 октября 2011

Измените его на:

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

echo $valor."\n";

Вы эффективно делали 2 * (2 - (1 / 2) = 2 * 1.5 = 3

0 голосов
/ 21 октября 2011

Заменив $resultado в выражении, вы получите:

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

2 - 1 / 2 = 1.5
2 * 1.5 = 3

Мое предложение - обзор базовой математики;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...