3.7章(http://dixq.net/g/03_07.html)について何ですが・・・

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
キョロキョロ

3.7章(http://dixq.net/g/03_07.html)について何ですが・・・

#1

投稿記事 by キョロキョロ » 12年前

このページの3.7章(http://dixq.net/g/03_07.html)についての質問です。
本当に初歩的でくだらない簡単な事かと思いますが、分からないところがあるのです。

このページのソースコード中に
angle = GetRand(10000)/10000.f * (PI*2); //0~PI*2の乱数を生成
speed = 0.5f + GetRand(10000)/10000.f * 2; //0.5~2.5の乱数を生成
とありますが、この抜き出したソース一行目の「10000.f」と二行目の「0.5f」と「10000.f」にくっついている「f」がありますよね?
これって、何の意味があるんですか?取ってコンパイルしてみたら変な風になってしましました。
ご解答よろしくお願いします。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 3.7章(http://dixq.net/g/03_07.html)について何ですが・・・

#2

投稿記事 by softya(ソフト屋) » 12年前

C/C++のデータ型に整数型と浮動小数点型があるのはご存知でしょうか?
それと暗黙の型変換と言うものは御存知ですか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

キョロキョロ

Re: 3.7章(http://dixq.net/g/03_07.html)について何ですが・・・

#3

投稿記事 by キョロキョロ » 12年前

すいません、まだまだ初心者なのでよく分からない事が多いです。
整数型と浮動小数点型があるのはわかるんですが、「浮動」の意味がよく分からないです。
あと、暗黙の型変換はたしかint型の計算の答えが少数になったらdouble型に勝手に変えられちゃう(?)みたいな事だったと思っています

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 3.7章(http://dixq.net/g/03_07.html)について何ですが・・・

#4

投稿記事 by softya(ソフト屋) » 12年前

整数型と違い、浮動小数点型(float,double)は少数以下と巨大な数値を扱えます。これが一番違います。
定数は10.0fと数値の最後にfをつけるとfloat型、10.0とするとdouble型、10でint型です。

「データ型」
http://www.kusa.ac.jp/~kajiura/c/data/newpage1.htm

fを取った時に問題が出たそうですが、どんな式にしたのか教えて下さい。暗黙の型変換が関係している可能性があります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

キョロキョロ

Re: 3.7章(http://dixq.net/g/03_07.html)について何ですが・・・

#5

投稿記事 by キョロキョロ » 12年前

angle = GetRand(10000)/10000 * (PI*2); //0~PI*2の乱数を生成
speed = 0.5 + GetRand(10000)/10000.* 2; //0.5~2.5の乱数を生成
こうしました。
それで質問を投稿した後に、自分でも再度よく考えてみたんですが、ひょっとして、「f」を取ってしまうと本来少数の入るはずの無いint型に少数がはいるから変な風になるのではないでしょうか?(説明下手ですみません><)

キョロキョロ

Re: 3.7章(http://dixq.net/g/03_07.html)について何ですが・・・

#6

投稿記事 by キョロキョロ » 12年前

キョロキョロ さんが書きました:angle = GetRand(10000)/10000 * (PI*2); //0~PI*2の乱数を生成
speed = 0.5 + GetRand(10000)/10000* 2; //0.5~2.5の乱数を生成
こうしました。
それで質問を投稿した後に、自分でも再度よく考えてみたんですが、ひょっとして、「f」を取ってしまうと本来少数の入るはずの無いint型に少数がはいるから変な風になるのではないでしょうか?(説明下手ですみません><)
こうでした

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 3.7章(http://dixq.net/g/03_07.html)について何ですが・・・

#7

投稿記事 by softya(ソフト屋) » 12年前

一部がint型で演算された為に少数以下が切り捨てられたものと思われます。割り算をint型でしてますからね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

キョロキョロ

Re: 3.7章(http://dixq.net/g/03_07.html)について何ですが・・・

#8

投稿記事 by キョロキョロ » 12年前

返信送れてすみません。

何となく分かった気がします。ありがとうございます。
あと、もう一つなんですが、「PI」を宣言するときに「3.1415926f」としますが、この「f」はfloat型という意味ですか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 3.7章(http://dixq.net/g/03_07.html)について何ですが・・・

#9

投稿記事 by softya(ソフト屋) » 12年前

上にも書いた通りfはfloat型の定数です。紹介したページを読んでみて下さいね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

キョロキョロ

Re: 3.7章(http://dixq.net/g/03_07.html)について何ですが・・・

#10

投稿記事 by キョロキョロ » 12年前

色々と有難うございました。また機会があればよろしくお願いします。

閉鎖

“C言語何でも質問掲示板” へ戻る