#Abstract
- Excelの演算子”^”を使うときは注意が必要
- Excelでは、「-x^y」の計算は「(-x)^y」と解釈される
- 「POWER(x,y)」という関数を使うことで、この問題は避けられる
#問題
Excelで累乗(3の2乗、等)を計算する方法として、演算子”^”が用いられます。
=3^2
と入力すると
9
と表示されます。
演算子”^”で累乗を表現するのは割と一般的で、
TEXでも”^”を使って累乗を表します1。
ところが、Excelで
=-3^2
と入力すると
9
と表示されます。
先に3^2
が計算されて、最後に符号-
が付いて
-9
と表示されるのと期待するのが普通だと思いますが、そうはなりません。
なお、Excelで
=0-3^2
と入力すると、
-9
と表示されます。
#Excel…どうして…
こちらのページによれば、
どうやらExcelの演算子の優先順位が特殊で、
同じ”-”でも
- 式の先頭の”-”
- 式の途中の”-”
では扱いが異なるようです。
それぞれの”-”と”^”の優先順位を並べると、
(先頭の”-”)>(”^”)>(途中の”-”)
となっています。
そのため、
=-3^2
の式は
=-3^2
→=(-3)^2
→=9
となる一方、
=0-3^2
の式は
=0-3^2
→=0-(3^2)
→=0-9
→=-9
となります。
#POWER()関数
Excelには、累乗を計算する関数としてPOWER()というのがあります。
=POWER(3,2)
と入力すると
9
と表示されます。
この関数を使うことで、
=-POWER(3,2)
と入力すれば
-9
と表示されますし、
=POWER(-3,2)
と入力すると
9
と表示されます。
#後書き
ExcelでRCフィルタ回路計算をさせているときに、計算が合わずにハマりました。
「^」と比べると「POWER()」ってタイピングするのは手間ですが、
後で計算が合わなくなって困るよりはマシだと思って
累乗計算では「POWER()」を使うようにしています。
明らかにExcelの仕様ミスな気がしますが、互換性の観点から、修正されることはないでしょうね2。