Excelでべき乗の計算をさせると不思議だなーという話 ~ 2^3^2
@curekoshimizu です。
仕事でExcelを使っていて不思議な気持ちになったので、とても久々に記事を更新しました。
お題となる計算
正しい計算方法
当然ながら
このように、指数部分から計算します。
間違って から計算して、 としてはいけないというお話になります。
そういう計算をしたいときには
と記す必要があります。
プログラミングでべき乗はどう表すか?
べき乗をプログラミングの演算子としてサポートしているものはいくつかあります。
例えば Excel・Google SpreadSheet・bc などは x ^ y と書くことで、 の計算ができます。
また、JavaScript・Python・Ruby・PHP・Fortran などは x**y と書くことで、 を計算できます。
自分が調べていて知らなかったことは、 bcやFortranなどの(古き良き)言語たちもこれらの記法をサポートしていたことでした。
計算をさせてみよう
Excel
Google SpreadSheet
bc
% bc bc 1.07.1 Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006, 2008, 2012-2017 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. 2^3^2 512
JavaScript
python
% python Python 3.12.3 (main, Apr 10 2024, 05:33:47) [GCC 13.2.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> 2**3**2 512
ruby
% irb irb(main):001:0> 2**3**2 => 512
php
% php -a Interactive shell php > echo 2**3**2; 512
Fortran
program main print *, 2**3**2 end program main
512
WolfmanAlpha
WolfmanAlphaくらいになるとどちらの記法もサポートしている!
つまり?
Excelは 左結合で べき乗の演算子を評価し、その他は右結合でべき乗の演算子を評価しているということです。
その他Excelに関する話はこちら
これらをみてExcelに関する記事に興味がありましたらこちらもどうぞ。
これは Excel でカッコをつけたり+0をつけたりすると計算結果が変わるという話。 math-koshimizu.hatenablog.jp
これは 難しい計算をさせるとExcelでは精度がでないので計算が破綻しますという話。 math-koshimizu.hatenablog.jp