假设我在Excel电子表格中的单元格A1拥有数字3。如果我输入公式
= - A1^2 + A1
在A2中,然后A2显示数字12,此时应显示-6(或-9 + 3)
这是为什么?如何防止这种误导性行为?
假设我在Excel电子表格中的单元格A1拥有数字3。如果我输入公式
= - A1^2 + A1
在A2中,然后A2显示数字12,此时应显示-6(或-9 + 3)
这是为什么?如何防止这种误导性行为?
Answers:
简短答案
要解决此问题,只需在等号前添加0
= 0 - A1^2 + A1
或添加几个圆括号以强制执行标准的操作顺序
= - (A1^2) + A1
或用减号-1的常见解释代替减号
= -1 * A1^2 + A1
在这种特殊情况下,如果您有多余的词+ A1,则最佳解决方案是@ lioness99a提出的解决方案:
= A1 - A1^2
详细说明
根据Excel的约定,
= - 3^2
等于(-3)^ 2 = 9,而
= 0-3^2
等于0-9 = -9。
为什么只加0会改变结果?
负号前面没有减号,-3 ^ 2中的减号被视为否定运算符,它是一元运算符(只有一个参数),用于更改其后的数字(或表达式)的正负号。但是,0-3 ^ 2中的减号是减法运算符,它是一种二进制运算符,它-
从之前的内容中减去后面的内容-
。根据Excel的公约,幂运算符 ^
的计算否定运算后和减法运算符之前。请参阅“ Excel中计算运算符和优先级”的 “ Excel在公式中执行操作的顺序”部分。
标准的数学惯例是,求幂是在求反和减法之前计算的,或更简单地说,^
是在之前计算的-
。可耻的是,Excel中选择了不同的约定从这些代数规则,教科书,学术写作,科学计算器,莲花1-2-3,数学,枫树,计算面向如Fortran或Matlab,语言MS Works和... VBA(中用于编写Excel宏的语言)。不幸的是,LibreOffice和Google Sheets的Calc遵循与Excel兼容的相同约定。但是,将表达式放在Google的搜索框或栏中会产生出色的效果。如果按回车键,将使用括号给出计算顺序。关于数学家杀死捍卫否定优先于幂运算的“计算机科学家”论据的讨论:http ://mathforum.org/library/drmath/view/69058.html
一般解决方法
如果要计算
- Anything ^ 2,
在等号前加0
0 - Anything ^ 2
或添加几个圆括号以强制执行标准的操作顺序
- ( Anything ^ 2 )
或用减号-1的常见解释代替减号
-1 * Anything ^ 2
在上述替代方案中,我更喜欢在减号前添加0,因为这是最实用的方法。如果表达式已经被括号包围,则避免添加括号。大量使用括号会使表达式更难以阅读,调试和写入。
如果添加了一个附加项(或减去了附加项,而没有偶数次幂问题),
- Anything ^ 2 + ExtraTerm,
最好的解决方案是将ExtraTerm放在首位,
ExtraTerm - Anything ^ 2.
对另一个答案的评论说,您唯一需要了解的非标准优先规则是,负号后跟等号(=-)。但是,还有其他示例,例如= exp(-x ^ 2)或=(-2 ^ 2 = 2 ^ 2),其中在减号之前没有减数。
感谢@BruceWayne提出了一个简短的答案,该答案是我在一开始就写的。
比Rodolfo的答案更简洁,您可以使用:
=-(A1^2)+(A1)
(编辑:我完全没有看到这是一个自我的问题/答案。)
因为Excel将您的方程式解释为:
(-x)^ 2 + x
当您需要时:
-(x ^ 2)+ x
为了避免这种不良行为,我发现最佳实践是大量使用括号来定义您自己的优先级系统,因为否定与减法不同,因此不属于PEMDAS。一个例子是:
(-(x ^ 2))+ x
可能矫kill过正,但这是我保证Excel表现出所需方式的方式。
x - x^2
。这样可以确保将-解释为二进制减法运算符。
该表达式= - A1^2 + A1
特定于Excel,因此必须遵循Excels规则。与这里的其他答案相反,没有正确的优先顺序。不同的应用仅采用不同的约定。供您参考,excel使用的优先顺序为:
: Range
<space> intersection
, union
- Negation
% Percentage
^ Exponential
* and / Multiplication and Division
+ and - Addition and Subtraction
& Concatenation
= < > <= >= <> Comparison
您可以使用括号覆盖。
-
可以是一元或二进制。但这并不意味着操作顺序。其他语言也能做到这一点:在Python,Ruby,Octave,Awk和Haskell(想到的前五种具有幂运算符的前五种语言)中,-3 ** 2
总会得出-9
。为什么?因为那是正确的答案。
您可以使用以下两种方法之一:
=-A1^2+A1
将返回12,但是:
=0-A1^2+A1
将返回-6
如果您认为返回12违反了常识;请注意,Google表格的功能相同。
=A1-A1^2
也返回-6
或者,你可以做
= A1 - A1^2
因为 -y + x = x-y
其他人已经回答“如何避免这种情况?” 问题的一部分。我要告诉你为什么会发生。
发生这种情况是因为1979年的个人计算机具有非常有限的内存和处理能力。
VisiCalc于1979年为Apple II推出,距IBM PC首次发布(大多数现代台式机和笔记本电脑追溯其直接血统)的两年之前。Apple II可能具有多达64 KiB(65,536字节)的RAM,而VisiCalc至少需要32 KiB才能运行。顺便说一句,VisiCalc被广泛认为是Apple II的“杀手级应用”,也许对于一般的个人微型计算机也是如此。
所需的特殊情况越少,公式的前瞻性越少,可以简化用于解析电子表格公式的代码。因此,有必要要求用户在极端情况下更为明确,以换取能够处理更大的电子表格的机会。请记住,即使使用了高端的Apple II,在考虑了应用程序所需的内存之后,您只有几十KB的数据可以玩。对于低内存系统(对于“严肃”的计算机而言,48 KiB RAM并非常见配置),该限制甚至更低。
当IBM推出其PC时,就将VisiCalc移植到了新架构上。Wikipedia将此端口称为“错误兼容”的端口,因此,即使系统从技术上讲能够进行更复杂的解析,您也非常希望看到完全相同的公式解析行为。
从1982年开始,Microsoft凭借其Multiplan跨平台电子表格与VisiCalc和后来的1-2-3竞争。后来,Lotus 1-2-3于1983年专门为IBM PC推出,并很快超过了它的VisiCalc。为了简化转换过程,两者都以与VisiCalc相同的方式解析公式是有意义的。因此,有限的超前行为将继续进行。
1985年,Microsoft 将Excel引入了PC ,最初是用于Macintosh,从1987年的版本2开始。再次,为了使过渡更容易,有理由继续使用公式解析行为,此行为是人们将近十年以来已经习惯的行为。
每次升级Excel时,都存在改变行为的机会,但不仅要求用户学习一种新的键入公式的方法,而且还冒着破坏与以前版本使用或创建的电子表格的兼容性的风险。在竞争仍然非常激烈的市场中,几家商业公司在每个领域相互竞争,很可能会做出决定,以保持用户习惯的行为。
快进到2019年,我们仍然坚持最初不迟于1978-1979年做出的解析行为决定的公式。
该表达式- A1^2
包含两个运算符,即一元-
求反运算符和二进制幂运算符^
。在没有任何括号的情况下,可能有两种解释。要么:
-(A1^2)
要么:
(-A1)^2
第一个说首先对操作数A1
和进行幂运算2
,然后对它求反。
第二个表示首先对操作数取负A1
,然后对和的结果取幂2
。
正如对问题的评论中所说,在任何理智的环境中,大国都比负号具有更高的优先权。这意味着,最好是系统采用第一个系统。
但是,Excel更喜欢第二种。
课程是,如果不确定您的环境是否正常,请将括号括起来是安全的。所以写-(A1^2)
。
这不是excel的问题,而是指数和负数。当您取一个数字并将其提高到偶数幂时,可以取消负号。
-x^2 + x == (-x * -x) + x
x = 3 => (-3 * -3) + 3
== 9 + 3 => 12
您需要使用括号,并使用多个 -1
-1 * (x^2) + x
这只是一个非常简单的数学。
规则1.即使是负数的乘法,也将输出正结果:
减*减=加
减*减*减=减
减*减*减*减=加
这是由于以下事实:负号成对地相互抵消。
规则2。每个数字的幂表示该数字将被自身乘以多次。
(2)^ n,其中n = 2 => 2 * 2 = 4
(-2)^ n,其中n = 2 =>(-2)*(-2)= 4
如果您可以看到规则编号1。
(-3)^ n,其中n = 3 =>(-3)*(-3)*(-3)= 9 *(-3)= -27
规则3.乘法和除法的优先级高于加法和减法。
3 * 5 + 2 = 15 + 2 = 17
3 *(5 + 2)= 3 * 7 = 21
您的问题的答案是:
合并之前的所有3条规则:
-x ^ 2 + x,其中x = 3 => -3 ^ 2 + 3 = 9 + 3 = 12
我对您的建议是每年花费一些时间,并不断刷新数学的基本规则。
实际上,仅通过了解基本数学知识,您就可以保持并保持在世界大部分地区的技能。
+-*/
,但不适用于-
或的一元运算符+
。幂运算符的优先级高于*
,/
但一元运算符的优先级更高