• ベストアンサー

double型とint型で三分の一乗の計算をしたい

C#を使っています。 (double型 / double型) ^ (1 / 3) このような計算をしたいのですが、 「エラー:演算子 '^' を 'double' と 'int' 型のオペランドに適用することはできません。」と、表示されてしまいます。 三分の一乗という計算をすることは不可能なのでしょうか。 よろしくお願いします。

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

  • ベストアンサー
  • ponzuinfo
  • ベストアンサー率53% (16/30)
回答No.4

C#では ^演算子=XOR演算 です (簡単な説明:2進数で左右の各位を比べて両方1なら0にする演算子) 11111000(10進数で248)^00111111(63)=11000111(199) C#で冪乗をする場合は、Tacosanさんの回答にもあるように Math.Pow関数を使います。 例: double i = Math.Pow(10.0 , (1.0/3.0));//10^(1/3) i=2.15443469003188

flytosk
質問者

お礼

ありがとうございます。大変参考になりました。 できれば皆さんに差し上げたいのですが、とくにわかりやすかったお二人にポイントを差し上げます。

その他の回答 (5)

  • Lchan0211
  • ベストアンサー率64% (239/371)
回答No.6

べき乗に^演算子が使えるのはVisual Basic系です。 C#のべき乗計算は、Math.Pow()を使う必要があります。 質問のエラーは、 C言語の^演算子(排他的OR)は、double型に適用できないという意味です。 (参考) http://www.atmarkit.co.jp/fdotnet/dotnettips/290mathpow/mathpow.html

flytosk
質問者

お礼

ありがとうございます。大変参考になりました。

  • imanami
  • ベストアンサー率0% (0/1)
回答No.5

右辺をdoubleにするのは (1.0/3.0)でも(1.0/3)でも(1/3.0)でもいいと思います。(演算子「/」は左右のどちらかがdoubleならdoubleを出力すると思います。) でもその前にプログラミングの基礎を思い出してください。 (1/3)は0.3333...ではありませんよ。0です。(int)/(int)の結果はintです。(double)(1 / 3)と(1.0/3.0)はどっちも結果はdoubleですが内容は違います。 その前に私はC#はあまり経験ないけど、演算子「^」はべき乗ですか?CやC++ではまったく別の演算子(排他的論理和)なんだけどC#も同じではないのですか?

flytosk
質問者

お礼

ありがとうございます。大変参考になりました。 できれば皆さんに差し上げたいのですが、とくにわかりやすかったお二人にポイントを差し上げます。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

ああ, もちろん #1 も必要. ただしキャストせずに 1.0/3.0 の方が普通.

flytosk
質問者

お礼

ありがとうございます。大変参考になりました。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

Math.Pow.

参考URL:
http://sonic64.com/2005-12-08.html
flytosk
質問者

お礼

ありがとうございます。大変参考になりました。

  • kent_a
  • ベストアンサー率18% (36/199)
回答No.1

おそらくですが (1 / 3) の1と3はint型とコンパイラは認識していると思います。 試しにdouble型にキャストしてみては?

flytosk
質問者

お礼

ありがとうございます。大変参考になりました。

関連するQ&A