
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で割ったあまりを出せばいいのです。
もっと他の事がやりたかったらまた聞いてください。
なるほど・・・僕はわざわざ複雑なのを使っていたのですね。
それを参考に書き直してみます。
もう一つお聞きしたいことがあるのですが
実数同士を比較する場合
if(「実数1」 == 「実数2」)
は使えないと聞きました。比較したい場合は実数1をintで整数化して実数2の部分では実数ではなく整数を使って整数同士を比較すればよいのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語:数値の桁数指定についての質問です。 8 2022/05/26 23:53
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- PHP カラーミーショップのSmartyでの文字列抜き出し 2 2022/05/06 11:51
- Excel(エクセル) エクセルのセルの書式設定・ユーザー定義の条件設定について 1 2022/08/17 21:56
- 統計学 Excelによるサンプルの拡大について 6 2023/08/22 16:03
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
有効数字について 以前質問をし...
-
計算の丸め誤差の解消について
-
ExcelでPC(パソコン)によって...
-
16進数 加算 減算 C言語
-
floatの有効桁数
-
Excel 計算結果誤差
-
C言語プログラミングにて、arct...
-
VBAでミリ秒まで出力する方法
-
三菱シーケンサ(Aシリーズ)で...
-
c languageで 簡単な質問があ...
-
除算を使わずに10で割りたい。
-
Pythonについてなのですが、小...
-
O(n log n)について2
-
ExcelのINT関数の計算結果がお...
-
どんな数字を入力してもaverage...
-
2038年問題 日付算出
-
2進数データのビット演算
-
VB6のFIX関数での誤差について
-
VB.net Double と...
-
float.h のテスト結果がおかしい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelでPC(パソコン)によって...
-
O(n log n)について2
-
有効数字について 以前質問をし...
-
c languageで 簡単な質問があ...
-
ExcelのINT関数の計算結果がお...
-
EXCELの関数"STDEV(標準偏差)"...
-
三菱シーケンサ(Aシリーズ)で...
-
VB.net Double と...
-
計算の丸め誤差の解消について
-
除算を使わずに10で割りたい。
-
2進数の足し算(C言語)
-
16進数 加算 減算 C言語
-
”/”を使わずに割り算したいんで...
-
CRCの計算方法について
-
VB6.0での小数点の扱いについて
-
VBAでミリ秒まで出力する方法
-
時刻の比較
-
2進数データのビット演算
-
教えて小数点の比較!(C言語)
-
C言語 型変換のタイミング
おすすめ情報