
No.4ベストアンサー
- 回答日時:
数値を比較したい場合、例えば
実数だと
1.0000000000000
1.0000000000001
は違うものだと判断されます。
しかし実際そこまでの精度で比較する場合があるでしょうか?
double型の数値を比較したい場合は、小数点どこまでを比較したいか考え、その桁分、桁上げすればいいのです。
なんだか文章で書くとわかりにくいですね。
実際にプログラムを書きながら見ていきましょう。
int main(){
double x=1.001,y=1.000;
}
このような宣言でxとyを比較する場合、普通にint型に変換して比較すると同じですね。
例
if((int)x == (int)y)
小数点第1位まで考えて比較しても
小数点第2位まで考えて比較しても同じになります。
しかし
小数点第3位まで考えて比較すると異なりますね。
小数点第一位まで考えて比較する場合
x=x*10; y=y*10;
if((int)x == (int)y)
とすれば小数点第1位まで考えた事となり
小数点第三位まで考えて比較する場合
x=x*1000; y=y*1000;
if((int)x == (int)y)
とすれば小数点第1位まで考えた事となります。
わかりますか?
あなたはどの制度で比較したいのでしょうか?
ただ単に小数部分が必要ないのでしたらint型にそのまま変換すればよく、小数点以下まで比較したいのなら
上記の通り比較すればよいです。
他難しい書き方をすればより簡単に表現できるのですが(なんか矛盾してますね)
一番簡単な例を紹介しました。
この回答で解決しなかった場合などありましたらまた聞いてください。
No.5
- 回答日時:
むむ!
心外な事に
× (rand() % 10 + 0.1 ) / 10
↓
○ (rand() % 10 + 1 ) / 10
でしたね・・。
ちなみに
0~1.0の乱数が作りたいなら
(rand() % 11) / 10
でよいですね。
失礼しました。
No.3
- 回答日時:
ただ単に10で割ったあまりを出せば10種類の乱数が作れます。
RAND_MAXとか使わなくても出来ます。
rand() % 10
↑これで0~9の10種類の乱数が生成可能
これを10で割れば0.0~0.9の乱数が生成可能
0.1~1.0の乱数がほしいのなら
0.1足してから10で割ればよい。
つまりこういう事です。
(rand() % 10 + 0.1 ) / 10
これで0.1~1.0の乱数が生成できます。
n種類の乱数を作りたいときは
nで割ったあまりを出せばいいのです。
もっと他の事がやりたかったらまた聞いてください。
この回答へのお礼
お礼日時:2006/07/13 23:41
なるほど・・・僕はわざわざ複雑なのを使っていたのですね。
それを参考に書き直してみます。
もう一つお聞きしたいことがあるのですが
実数同士を比較する場合
if(「実数1」 == 「実数2」)
は使えないと聞きました。比較したい場合は実数1をintで整数化して実数2の部分では実数ではなく整数を使って整数同士を比較すればよいのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
有効数字について 以前質問をし...
-
O(n log n)について2
-
Fortran において変数の定義
-
丸め誤差と桁落ちの違いとは
-
CRCの計算方法について
-
EXCELの関数"STDEV(標準偏差)"...
-
「Aに対するBの割合」と「Aに対...
-
Aの値からBの値を除するとは??
-
2÷3などの余りについて
-
文字列から空白を取り除きたい...
-
Enterキーを押されたら次の処理...
-
複数の変数の比を求めるには?
-
問題がで書きで申し訳ないので...
-
ある商品のロス率を5%見込み、...
-
DWORDの実際の型は何でしょうか
-
c言語初心者です。ついに。。
-
複数桁10進数の*桁目だけを抽出...
-
マイナスからプラスへ転じた時...
-
getcharをしながらwhile文で出...
-
信頼区間の1.96や1.65ってどこ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
有効数字について 以前質問をし...
-
c languageで 簡単な質問があ...
-
ExcelでPC(パソコン)によって...
-
O(n log n)について2
-
2進数の足し算(C言語)
-
16進数 加算 減算 C言語
-
EXCELの関数"STDEV(標準偏差)"...
-
三菱シーケンサ(Aシリーズ)で...
-
VB.net Double と...
-
MATLABでの行列の全要素の和
-
除算を使わずに10で割りたい。
-
floatの有効桁数
-
”/”を使わずに割り算したいんで...
-
ExcelのINT関数の計算結果がお...
-
VBAでミリ秒まで出力する方法
-
VB6.0での小数点の扱いについて
-
Fortran において変数の定義
-
C言語について質問です。
-
計算の丸め誤差の解消について
-
CRCの計算方法について
おすすめ情報