ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者:flytosk double型とint型で三分の一乗の計算をしたい
困り度:
  • 困っています
C#を使っています。
(double型 / double型) ^ (1 / 3)
このような計算をしたいのですが、
「エラー:演算子 '^' を 'double' と 'int' 型のオペランドに適用することはできません。」と、表示されてしまいます。
三分の一乗という計算をすることは不可能なのでしょうか。
よろしくお願いします。
質問投稿日時:09/11/06 00:50
質問番号:5425325
この質問に対する回答は締め切られました。
最新から表示回答順に表示良回答のみ表示

回答

 

回答者:Lchan0211 べき乗に^演算子が使えるのはVisual Basic系です。
C#のべき乗計算は、Math.Pow()を使う必要があります。

質問のエラーは、
C言語の^演算子(排他的OR)は、double型に適用できないという意味です。

(参考)
http://www.atmarkit.co.jp/fdotnet/dotnettips/290mathpow/mathpow.html
種類:回答
どんな人:経験者
自信:自信あり
回答日時:09/11/06 09:33
回答番号:No.6
この回答へのお礼ありがとうございます。大変参考になりました。

回答

良回答10pt

回答者:imanami 右辺を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#も同じではないのですか?
種類:アドバイス
どんな人:専門家
自信:自信あり
回答日時:09/11/06 03:45
回答番号:No.5
この回答へのお礼ありがとうございます。大変参考になりました。
できれば皆さんに差し上げたいのですが、とくにわかりやすかったお二人にポイントを差し上げます。

回答

良回答20pt

回答者:ponzuinfo 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
種類:回答
どんな人:経験者
自信:自信あり
回答日時:09/11/06 03:14
回答番号:No.4
この回答へのお礼ありがとうございます。大変参考になりました。
できれば皆さんに差し上げたいのですが、とくにわかりやすかったお二人にポイントを差し上げます。

回答

 

回答者:Tacosan ああ, もちろん #1 も必要. ただしキャストせずに 1.0/3.0 の方が普通.
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:09/11/06 01:01
回答番号:No.3
この回答へのお礼ありがとうございます。大変参考になりました。

回答

 

回答者:Tacosan Math.Pow.
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:09/11/06 00:59
回答番号:No.2
参考URL: http://sonic64.com/2005-12-08.html
この回答へのお礼ありがとうございます。大変参考になりました。

回答

 

回答者:kent_a おそらくですが
(1 / 3)
の1と3はint型とコンパイラは認識していると思います。
試しにdouble型にキャストしてみては?
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:09/11/06 00:56
回答番号:No.1
この回答へのお礼ありがとうございます。大変参考になりました。
最新から表示回答順に表示良回答のみ表示