- ベストアンサー
double型とint型で三分の一乗の計算をしたい
C#を使っています。 (double型 / double型) ^ (1 / 3) このような計算をしたいのですが、 「エラー:演算子 '^' を 'double' と 'int' 型のオペランドに適用することはできません。」と、表示されてしまいます。 三分の一乗という計算をすることは不可能なのでしょうか。 よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
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
その他の回答 (5)
- Lchan0211
- ベストアンサー率64% (239/371)
べき乗に^演算子が使えるのはVisual Basic系です。 C#のべき乗計算は、Math.Pow()を使う必要があります。 質問のエラーは、 C言語の^演算子(排他的OR)は、double型に適用できないという意味です。 (参考) http://www.atmarkit.co.jp/fdotnet/dotnettips/290mathpow/mathpow.html
お礼
ありがとうございます。大変参考になりました。
- imanami
- ベストアンサー率0% (0/1)
右辺を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#も同じではないのですか?
お礼
ありがとうございます。大変参考になりました。 できれば皆さんに差し上げたいのですが、とくにわかりやすかったお二人にポイントを差し上げます。
- Tacosan
- ベストアンサー率23% (3656/15482)
ああ, もちろん #1 も必要. ただしキャストせずに 1.0/3.0 の方が普通.
お礼
ありがとうございます。大変参考になりました。
- Tacosan
- ベストアンサー率23% (3656/15482)
- kent_a
- ベストアンサー率18% (36/199)
おそらくですが (1 / 3) の1と3はint型とコンパイラは認識していると思います。 試しにdouble型にキャストしてみては?
お礼
ありがとうございます。大変参考になりました。
お礼
ありがとうございます。大変参考になりました。 できれば皆さんに差し上げたいのですが、とくにわかりやすかったお二人にポイントを差し上げます。