No.5ベストアンサー
- 回答日時:
doubleとfloatでは、精度が違い、そのためメモリに占める大きさも違います。
また、一般的には、桁が多いとその分計算時間がかかります。
ですから、精度が必要ない場面では、floatを使う、というのも一つの考えかたです。
ですが、実際には「一概に言えない、処理系依存」です。
以前は全てCPUで計算していたので、精度=計算量でした。
しかし、最近では浮動小数点演算専用の回路が付いているケースが多く、計算時間は同じだったり、doubleに変換が必要でその分floatの方が遅かったり、floatでの演算はより高速にできたり、と様々です。
32bitCPUでは、32bitのfloatの方が扱いやすいでしょうが、64bitCPUでは64bitのdoubleの方が扱いやすいかもしれません。
Cのmath.hで使える標準関数はdouble型のものがほとんどです。三角関数は2Dのゲームでも使う機会が多いのではないでしょうか。sinもcosもdouble型です。内部演算は当然doubleですので、変数にfloatを使ったからと早くはならず、むしろfloat型の変数に入れるときに暗黙の型変換が発生する分遅くなる可能性もあります。
そういった背景を考え検討した結果、floatを使う方がよい、と判断したのならいいのですが、「先生に言われた」では理由になりません。
聞けるのなら、その先生に理由を聞いてください。真意がわからないうちは、鵜呑みしないことです。
No.6
- 回答日時:
本来なら先生に理由を聞きに行くのが先でしょうが、それはさておき。
doubleよりfloatのほうがいいのは、主に「メモリをケチる場合」と「FPUがない場合の高速化」です。
前者は、floatとdoubleでは、必要なメモリ量が概ね倍ほど違うためfloatにするとそれだけでメモリが節約できます。
後者は、FPUというのは浮動小数演算器(Floating Point number processing Unit)のことで、その名が示す通り浮動小数演算のみを行うための専用ユニットです。
これがある場合にはハードウェア上で高速に浮動小数の計算処理を行ってくれるので深く考えずにdoubleを使って問題ないのですが、ない場合はFPUが行ってくれている膨大な計算量をソフト的に処理しなければならなくなり精度と演算量が比例するため「精度重視でdouble」「多少精度が落ちても速度を取ってfloat」「速度最優先・精度無視でint」の三択が発生することになります。
メモリ量やFPUの有無はプラットフォーム次第、要は「何で動くものを作るか」次第な訳ですが、ゲーム機で作ることを最終目標にしているのであれば、いずれは必要になる知識ではあるかと思います。
No.4
- 回答日時:
No2の補足ですが、整数値の計算であっても、16,777,215(だったかな)以上の数値を扱うのならdoubleにしないとダメです。
先頭1ビットは符号用なので、値がマイナスになります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 単振り子とルンゲ・タック法 1 2022/07/15 00:05
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# C++で割り算の結果を昇順に出力するプログラムを作りたいのですが、例えば(double)100000 3 2022/07/15 17:46
- C言語・C++・C# (C言語)めちゃくちゃな値になってしまいます。 5 2022/08/13 11:55
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- Visual Basic(VBA) VBAでのMATCH関数 3 2022/10/17 19:06
- C言語・C++・C# LU分解法のピボッティングについて(C言語/gcc-9) 3 2022/07/11 23:10
- C言語・C++・C# C++のcinの動作 5 2023/02/26 00:13
- C言語・C++・C# LU分解法のピボット選択機能実装について(C言語・gcc-9) 1 2022/07/22 15:20
- C言語・C++・C# C言語のマクローリン展開ローラン展開のコードについて 3 2022/12/15 14:45
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
doubleの変数にintとintの割り算の結果を代入するとき
C言語・C++・C#
-
バッファとは何ですか
C言語・C++・C#
-
C言語で、メモリを解放しないで終わるプログラム
C言語・C++・C#
-
-
4
System.err. printlnとSystem.out.printlnはどう違うんでしょうか?
Java
-
5
含まない言い方ってどうしたらいいんでしょうか
日本語
-
6
0除算して、落ちるプログラムと落ちないプログラム
C言語・C++・C#
-
7
doubleは常に%lfとするべきなのか
C言語・C++・C#
-
8
【C++】関数ポインタの使い方
C言語・C++・C#
-
9
C言語のintとcharの違いってなんですか?単にメモリ領域が違うだけですか?
C言語・C++・C#
-
10
表内、縦位置の中央揃えがど~~してもできない!!
Word(ワード)
-
11
3行3列の行列の和と積の計算方法を教えて下さい。
数学
-
12
初級者の質問――time_tについて
C言語・C++・C#
-
13
C言語での引数の省略方法
C言語・C++・C#
-
14
エラーの意味は? Lvalue required
C言語・C++・C#
-
15
char str[256]の256の意味は?
C言語・C++・C#
-
16
関数から配列を返すには?
C言語・C++・C#
-
17
C言語におけるif文の評価順
C言語・C++・C#
-
18
C言語の型による処理速度の違い
C言語・C++・C#
-
19
C#にて別クラスの関数を使いたい
C言語・C++・C#
-
20
C++のfor文について
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラムでの数字につく”f”の...
-
doubleの変数にintとintの割り...
-
C言語の型による処理速度の違い
-
C言語初心者 構造体 課題について
-
C言語でintをdoubleに
-
float型とdouble型の変数の違い...
-
C言語 関数プロトタイプ宣言の...
-
newとdeleteな気がするエラー
-
listに構造体を格納
-
浮動小数点数が表示されないん...
-
C言語について(三角形の面積・d...
-
至急です! マクロ定義で #defi...
-
離散フーリエ変換のプログラム...
-
long doubleの表示方法
-
-1.#IND00と出てしまうのですが...
-
float?数字の後にLがつくもの
-
c言語のコンパイルエラー canno...
-
128ビットの浮動小数点型
-
C言語を実行すると-infが出てき...
-
指数形式で入力するには
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラムでの数字につく”f”の...
-
至急です! マクロ定義で #defi...
-
C 開放してるのにエラー(doubl...
-
doubleの変数にintとintの割り...
-
C言語の型による処理速度の違い
-
関数におけるif文とreturn文に...
-
float型とdouble型の変数の違い...
-
int とdoubleの比較
-
C言語 関数プロトタイプ宣言の...
-
C言語を実行すると-infが出てき...
-
C言語初心者 構造体 課題について
-
2次方程式の解を求めるプログ...
-
c言語で、繰り返し文の中で、0....
-
3次方程式の求解プログラム(...
-
指数形式で入力するには
-
線形補間
-
浮動小数点の誤差のあわせ方
-
浮動小数点の定数
-
浮動小数点数が表示されないん...
-
たくさんの数の平均を求める方...
おすすめ情報