- ベストアンサー
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 の方が普通.
お礼
ありがとうございます。大変参考になりました。
- kent_a
- ベストアンサー率18% (36/199)
おそらくですが (1 / 3) の1と3はint型とコンパイラは認識していると思います。 試しにdouble型にキャストしてみては?
お礼
ありがとうございます。大変参考になりました。
関連するQ&A
- (int)/(int)=(double)にする方法
(int)/(int)=(double)にする方法を教えて下さい。 例えば、 int a, b; double c; a=1; b=2; c=a/b; とすると、cとして0が計算されますよね。 0でなく0.5と計算させる方法をご存知の方教えて下さい。 ちなみに、a,bを最初の宣言の時点でdouble型にすることはできません。 よろしくお願いいたします。
- ベストアンサー
- その他(ソフトウェア)
- C言語でintをdoubleに
C言語でプログラミングを書いています。 10問の問題の正解数に応じて正答率を出すプログラムを書いているのですが、正解数を数えるものをintで定義(seikaiとする)し、正答率の計算結果を出すものをdoubleで定義(rituとする)しました。 seikaiをインクリメントで数え ritu=seikai/10*100 という計算をしました。このrituを%fで表示させようとしても正しく表示されません。intで定義したものを計算に用いて、その計算結果をdoubleで定義したもので表示することはできないのですか?? また、自分で調べたら、ritu=(double)seikai/10*100とやるというものがありましたが、”(double)”を使わずに計算を反映させることはできませんか?
- 締切済み
- C・C++・C#
- 数字の double 型 を int型 にする時
仮に double 型 の ある数字を 12.6 とします。 printf関数を使って .0f で表示する時は 小数点を四捨五入されて 、整数地が1繰り上がり13と表示されます。 ここである数字をキャスト演算子を使ってprintfで表示すると小数点を切り捨てられるので12と表示されます。 これはdouble型では 12.6 がはいっていて int型では12がはいっているから起こる現象ですね。 前置きは長く長くなりましたがdouble型で四捨五入される数字を、int型にした時に1繰り上げる簡単な方法はないものでしょうか? double a = 12.6; int b = ( int ) a; if( a - ( double ) b > 0.4444444444 ){ b++; } printf( "%d\n" , b ); こういう方法なら一応出来ない事はないですがもっと簡単な方法はありませんか? 後、私は時間が余りないので時間内に回答がなければ返信が来週になります。 申し訳ありません。 答えていただいた方はありがとうございます。
- ベストアンサー
- C・C++・C#
- 10の302乗の計算またはDoubeのキャストについて教えて下さい。
java言語で質問があります。よろしくお願い致します。 次のプログラムを作成し、2点質問をさせて下さい。 まずは10の302乗を計算したいときとキャストを調べたところdouble型はできないのでどう対処すればいいでしょうか。どうぞアドバイス下さい。class Enzanshi{ public static main(String args[]){ int num1; double num = num1*10^302; } } エラー内容はこうです。 C:\java>javac Enzanshi.java Enzanshi.java:2: メソッドの宣言が不正です。戻り値の型が必要です。 public static main(String args[]){ ^ Enzanshi.java:3: \65307 は不正な文字です。 int num1; ^ Enzanshi.java:4: \65307 は不正な文字です。 double num = num1*10^302; ^ エラー 3 個
- 締切済み
- Java
- unsigned int型と int型の型変換の上位性
if(-10<1u)の条件判定はunsigned型で評価され偽となります。 int型 unsigned int型とも32ビットで考えたとき、 1u = 0x00000001 -10 = 0xfffffff6で10進法では4294967286になります。 条件判定をunsigned型で考えれば確かに-10<1uは偽になり int型で考えれば-10<1uは真になります。 「通常の算術変換」によれば、「一方のオペランドがunsigned int型をもつ時、他のオペランドをunsigned int型に型変換するとあります。」 よって、if(-10<1u)の条件判定はunsigned型で評価され偽となりますが、 「一方のオペランドがint型をもつ時、他のオペランドをint型に型変換する。」では何故いけないのでしょうか? 宜しく願います。
- ベストアンサー
- C・C++・C#
- シフト演算の結果の型
シフト演算の結果の型は、左オペランドの型ということを聞きました。 この左オペランドの型というのは算術型変換をしてからのか、する前の型なのかどちらなのでしょうか? 例えば int a = -2; unsigned int b = 1; a >> b このときの結果の型は何になるのでしょうか? 算術型変換が起きる前のintになるのか? それとも算術型変換が起きるた後のunsigned intになるのか? 例文としてはおかしい点もあるかもしれませんが よろしくお願いします。
- ベストアンサー
- C・C++・C#
- 暗黙的型変換
C の文法書を読んでいると、 汎整数型拡張: int より小さな汎整数型が式中に現れる場合は、暗黙的に int 型に変換される。 算術変換: 二項演算子で二つのオペランドの型が違う場合は、演算前により大きな方の型に暗黙的に変換される。 とあります。 例えば int 型 = unsigned short 型 - unsigned char 型; はどのように暗黙的な型変換が行われるのでしょう。 int 型 = (int)unsigned short 型 - (int)unsigned char 型; でしょうか。あるいは、 int 型 = (int) ( unsigned short 型 - (unsigned short)unsigned char 型); でしょうか。
- ベストアンサー
- C・C++・C#
- int とdoubleの比較
よろしくお願いします。 vc2008でif文の条件として例として以下のように int a = 1; double b = 1.5; if(a < b){} としました。 確か異なる型の比較はまずかったように思うのですが、 このままビルドが通ってしまいました。 特に警告などが出ず、ビルドが通ってしまうのはvc2008が 自動で補正したりしているからなのでしょうか? ご存知の方おりましたら教えてください。
- ベストアンサー
- C・C++・C#
- double型からint型へのキャストについて
お世話になります。 掲題の疑問がわきましたので質問させてください。 Ex1. int a = 100; a /= 1.05; Ex2 int a = 100; a = 100 / 1.05; この場合、Ex1は問題なく、Ex2でエラーが発生します。 Ex2でdouble型からint型へキャストできないということは納得できるのですが、逆になぜEx1が問題なく行えるのでしょうか、、 よろしくお願い致します。
- 締切済み
- Java
お礼
ありがとうございます。大変参考になりました。 できれば皆さんに差し上げたいのですが、とくにわかりやすかったお二人にポイントを差し上げます。