Предположим, что моя ячейка A1 в таблице Excel содержит номер 3 . Если я введу формулу
= - A1^2 + A1
в A2 тогда A2 показывает число 12, когда оно должно показывать -6 (или -9 + 3)
Почему это? Как я могу предотвратить это вводящее в заблуждение поведение?
microsoft-excel
worksheet-function
notation
Родольфо Овьедо
источник
источник
Ответы:
Краткий ответ
Чтобы решить эту проблему, просто добавьте 0 перед знаком равенства
или добавьте пару круглых скобок, чтобы заставить стандартный порядок операций
или заменить знак минус его общей интерпретацией умножения на -1
В этом конкретном случае, когда у вас есть дополнительный член + A1, лучшее решение - это то, что предлагает @ lioness99a:
Детальное объяснение
В соответствии с соглашениями Excel,
равно (-3) ^ 2 = 9, а
равно 0-9 = -9.
Почему добавление только 0 меняет результат?
Знак минус в -3 ^ 2 , которому не предшествует minuend, считается оператором отрицания , который является унарным оператором (только с одним аргументом), который меняет знак следующего числа (или выражения). Однако знак минус в 0-3 ^ 2 является оператором вычитания , который является двоичным оператором, который вычитает то, что следует
-
из того, что предшествует-
. Согласно соглашениям Excel, оператор возведения в степень^
вычисляется после оператора отрицания и перед оператором вычитания . См. «Операторы вычисления и приоритет в Excel» , раздел «Порядок, в котором Excel выполняет операции в формулах».Стандартное математическое соглашение состоит в том, что возведение в степень вычисляется до отрицания и вычитания или, проще говоря,
^
вычисляется раньше-
. Позорно, Excel выбрал различные соглашения из правил алгебры, школьных учебников, академического письма, научных калькуляторов, Lotus 1-2-3, Mathematica, Maple, языков, ориентированных на вычисления, таких как Fortran или Matlab, MS Works и ... VBA ( язык, используемый для написания макросов Excel), К сожалению, Calc для LibreOffice и Google Sheets придерживаются одного и того же соглашения для совместимости с Excel. Тем не менее, размещение выражения в окне поиска Google или панели дает отличные результаты. Если вы нажмете ввод, порядок вычислений будет дан с использованием скобок. Дискуссия, в которой математик убивает аргументы «ученого-компьютерщика», защищающего преимущество отрицания над возведением в степень: http://mathforum.org/library/drmath/view/69058.htmlОбщие обходные пути
Если вы хотите вычислить
добавить 0 перед знаком равенства
или добавьте пару круглых скобок, чтобы заставить стандартный порядок операций
или заменить знак минус его общей интерпретацией умножения на -1
Из вышеупомянутых альтернатив я предпочитаю добавлять знак 0 перед знаком минус, потому что это наиболее практично. Если выражение уже заключено в круглые скобки, я избегаю добавлять круглые скобки. Интенсивное использование скобок затрудняет чтение, отладку и запись выражений.
Если добавлен дополнительный термин (или вычтен без проблемы четной мощности),
лучшее решение - разместить ExtraTerm первым,
В комментарии к другому ответу говорится, что единственный случай, когда вы должны знать о нестандартном правиле приоритета, - это когда знак минус следует за знаком равенства (= -). Однако есть и другие примеры, такие как = exp (-x ^ 2) или = (- 2 ^ 2 = 2 ^ 2), где перед знаком минус нет миньенда.
Спасибо @BruceWayne за предложение короткого ответа, который я написал в начале.
Вы можете быть заинтересованы в соответствии с Excel, 4 ^ 3 ^ 2 = (4 ^ 3) ^ 2. Это действительно стандартное математическое соглашение?
источник
Немного более лаконично, чем ответ Родольфо, вы можете использовать:
(Правка: я совершенно не видел, что это был вопрос / ответ.)
источник
Ведущий
-
считается частью первого срока.=-3^2
обрабатывается как(-3)^2 = 9
С нулем в начале вместо этого он рассматривается как нормальное вычитание.
=0-3^2
обрабатывается как0 - 3^2 = -9
И если у вас есть два оператора, то произойдет то же самое.
=0--3^2
обрабатывается как0 - (-3)^2 = -9
и=0+-3^2
обрабатывается как0 + (-3)^2 = 9
источник
Потому что Excel интерпретирует ваше уравнение как:
(-x) ^ 2 + x
Когда вы хотели:
- (х ^ 2) + х
Чтобы предотвратить нежелательное поведение такого рода, я считаю, что лучше всего использовать скобки для определения вашей собственной системы приоритетов, поскольку отрицание - это не то же самое, что вычитание, и, следовательно, оно не охватывается PEMDAS. Пример будет выглядеть так:
(- (х ^ 2)) + X
Это может быть излишним, но я гарантирую, что Excel ведет себя так, как я хочу.
источник
x - x^2
. Это гарантирует - интерпретируется как оператор двоичного вычитания.Это выражение
= - A1^2 + A1
относится только к Excel, поэтому должно следовать правилам Excels. Вопреки некоторым другим ответам здесь, нет правильного порядка приоритета. Есть просто разные соглашения, принятые разными приложениями. Для справки, порядок приоритета, используемый Excel:Который вы можете переопределить с помощью скобок.
источник
-
может быть одинарным или двоичным. Но это не подразумевает порядок операций. Другие языки понимают это правильно: в Python, Ruby, Octave, Awk и Haskell (первые пять языков с оператором возведения в степень, которые пришли в голову),-3 ** 2
всегда оценивается как-9
. Почему? Потому что это правильный ответ.Вы можете получить это любым способом:
вернет 12 , но:
вернет -6
Если вы чувствуете, что возвращение 12 нарушает здравый смысл; знать, что Google Sheets делает то же самое.
источник
=A1-A1^2
и возвращает -6В качестве альтернативы, вы могли бы просто сделать
= A1 - A1^2
потому что
-y + x = x-y
источник
Другие люди ответили: «Как я могу избежать этого?» часть вопроса. Я собираюсь рассказать вам, почему это происходит.
Это происходит потому, что персональные компьютеры в 1979 году имели очень ограниченные возможности памяти и обработки.
VisiCalc был представлен для Apple II в 1979 году, за два года до первоначального выпуска IBM PC (на котором большинство современных настольных и портативных компьютеров прослеживают свое прямое происхождение). Apple II может иметь до 64 КБ (65 536 байт) оперативной памяти, а для работы VisiCalc требуется как минимум 32 КБ. В некотором смысле, VisiCalc довольно широко считается «убийственным приложением» для Apple II и, возможно, действительно для персональных микрокомпьютеров в целом.
Чем меньше особых случаев и меньше формульного просмотра, тем проще (и, как следствие, меньше) код для анализа формулы электронной таблицы. Поэтому имеет смысл требовать, чтобы пользователь был несколько более явным в угловых случаях в обмен на возможность обработки больших таблиц. Помните, что даже с высококлассным Apple II у вас было всего несколько десятков килобайт для игры после того, как была учтена память, необходимая для приложения. В системе с малым объемом памяти (48 КБ ОЗУ не было необычной конфигурацией для «серьезной» машины), предел был еще ниже.
Когда IBM представила свой ПК, был создан порт VisiCalc для новой архитектуры. В Википедии этот порт называется «совместимым с ошибками» , поэтому вы очень ожидаете увидеть то же самое поведение при разборе формулы, даже если система технически способна к более сложному анализу.
Начиная с 1982 года Microsoft конкурировала с VisiCalc, а затем 1-2-3 с их кроссплатформенной электронной таблицей Multiplan . Позже Lotus 1-2-3 был представлен в 1983 году специально для IBM PC и быстро обогнал VisiCalc на нем. Чтобы облегчить переход, имело смысл проанализировать формулы так же, как VisiCalc. Таким образом, ограниченное прогнозное поведение будет перенесено вперед.
В 1985 году Microsoft представила для ПК Excel , первоначально для Macintosh и начиная с версии 2 в 1987 году. Опять же, чтобы облегчить переход, имело смысл перенести формулу поведения разбора, к которой люди уже привыкли к этому уже почти десятилетие.
С каждым обновлением Excel существовала возможность изменить поведение, но это не только требовало бы от пользователей изучения нового способа ввода формул, но также создавало бы риск нарушения совместимости с электронными таблицами, использованными или созданными в предыдущей версии. На все еще очень конкурентном рынке с несколькими коммерческими компаниями, конкурирующими друг с другом в каждой области, решение, вероятно, было принято, чтобы сохранить привычное поведение пользователей.
Перенесемся в 2019 год, и мы все еще застряли с формулой решений о поведении, изначально принятых не позднее 1978-1979 годов.
источник
Выражение
- A1^2
содержит два оператора: унарный оператор отрицания-
и бинарный оператор возведения в степень^
. При отсутствии каких-либо круглых скобок возможны две интерпретации. Или:или же:
Первый один говорит , что сначала сделать экспоненциацию с операндами
A1
и2
, а затем сделать отрицание по этому поводу .Второй говорит: сначала сделай отрицание операнда
A1
, а затем возведи возведение в степень в результате этого и2
.Как было сказано в комментариях к вопросу, полномочия имеют более высокий приоритет, чем знаки минус в любой нормальной среде. Это означает, что лучше всего, если система предполагает первый.
Тем не менее, Excel предпочитает второй.
Урок заключается в том, что если вы не уверены, является ли ваша среда здоровой или нет, включите скобки, чтобы быть в безопасности. Так что пиши
-(A1^2)
.источник
Это не проблема с Excel, а с показателями и негативами. Когда вы берете число и повышаете его до четной степени, вы отменяете отрицательный знак.
Вам нужно использовать скобки и кратные
-1
источник
-x^2
где х равен 3 иx^2
где х -3.-x^2+x
никогда не достигнет 12: wolframalpha.com/input/?i=-x%5E2%2Bx-x ^ 2 + x где x = 3 Это пример квадратного уравнения Уравнение можно записать так: -3 * -3 + 3: Умножение имеет приоритет перед сложением, поэтому результат будет записан следующим образом: 9 + 3 : Почему = 9, потому что отрицательное число x отрицательное число дает положительный результат. Это можно проверить с помощью любого калькулятора, правила слайдов или любой компьютерной математической программы. Окончательный результат 9 + 3 = 12
источник
Это просто очень простая математика.
Правило 1. Даже умножение отрицательных чисел приведет к положительному результату:
Это связано с тем, что минусы отменяют друг друга попарно.
Правило 2. Сила каждого числа определяет, что это число будет умножено само по себе несколько раз.
И если вы можете увидеть Правило № 1 ..
Правило 3. Умножение и деление имеют более высокий приоритет, чем сложение и вычитание.
И есть ответ на ваш вопрос:
Объединение всех 3-х правил:
Я советую вам проводить время каждый год и обновлять фундаментальные правила математики.
На самом деле это навык, который вы можете поддерживать и оставаться на вершине большой части мира, только зная основы математики.
источник
+-*/
, но не к унарным операторам, подобным-
или+
. Внеочередной оператор мощности выше*
и/
но унарные операторы имеют даже более высокий приоритет