• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:演算子キャレット "^" によるべき乗計算)

演算子キャレットによるべき乗計算のトラブル

このQ&Aのポイント
  • 新しいパソコンではべき乗計算が正しく動作しない問題が発生しています。
  • べき乗値が小数の場合、答えが誤って「1」となってしまいます。
  • MacBook Pro(OSX10.7.4)のExcel 2001およびLiveCalc 2.2の環境でこの問題が発生し、Power関数やSQRTは正しく動作していますが、解決策は見つかっていません。情報をお持ちの方はご協力ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • ki073
  • ベストアンサー率77% (491/634)
回答No.3

No.2の続きです。 ^の演算をプログラムで実現する時には、右側の値が整数かそれ以外で普通処理を分けます。 整数の場合は左側の値を単純に掛けていきます。exp(2*ln(8))のようにすると正確には64にならずに若干誤差がでるためです。正確さを期待している場合が多いのでそのようにします。 小数を含む場合には単純にかけ算ができませんので、expをlogで計算します。 EXCELはどのように処理しているかは分かりませんが、同じことをやっている可能性はあります。バグだとするとそこの切替がうまく動いていないような感じですね。 OSのバージョンが上がった程度でこんな単純なバグがでるのは不思議な感じがします。 先ほど書きましたように、EXCELでなくても 整数の場合は8^2のように使って 小数の場合あるいは整数が混在しても若干の誤差を許容できる場合は exp(0.5*ln(8))のようにするのが一番安全なやりかたです。

KappNets
質問者

お礼

焦っていたので質問を先にしましたが、その後で手探りの対策を行いました。先ずパソコンを再起動したところ、Excel の症状 (Excel では "1" になるのではなくエラーメッセージが出るのでした) は治りました。LiveCalc は治りませんでしたので、その代わりに Calcloop Plus と DashCalc をダウンロードしました (両方とも良いソフトです)。原因は突き止められていませんが、とりあえず対策を終えました。 exp(0.5*ln(8)) という方法は初めて知りました。ありがとうございました。

その他の回答 (2)

  • ki073
  • ベストアンサー率77% (491/634)
回答No.2

LiveCalc2.2を10.6で試してみましたが、「おかしい」と書いてあるのと同じ答えですね。 この演算子は整数だけを前提としている場合がありますので、多分「仕様」でしょう。マニュアルが見つからなかったので、そのような仕様で作ったかは確認できませんがこの演算子はそういうこともよくありますので、logとexpでやるのがまあ普通の安全なやり方です。 Excelの方ですが、EXCEL2000とWindows XPでは=8^0.5で2.82~となりますので、小数の演算を許しているようですね。 Mac用のExcelを持っていませんので、仕様なのかどうかは分かりません。多分OSへの対応がEXCEL2001では不十分なのかも知れません。 先にも書きましたが、^はプログラムや処理系によってこのようなことがよく発生しますので、 exp(0.5*ln(8)) の使用をお勧めします。(EXCELの場合はlogではなくlnでないとeが底にならないみたいですね)

  • chieffish
  • ベストアンサー率44% (1149/2554)
回答No.1

そのExcel 2001って10.7に対応してるのですか?

KappNets
質問者

補足

Office 2011 は mac 用の最新バージョンです。10.7 にも対応していると思われます。

関連するQ&A