
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
先着1,000名様に1,000円分もらえる!
教えて!gooから感謝をこめて電子書籍1,000円分プレゼント
-
積分で1/x^2 はどうなるのでしょうか?
数学
-
e^(x^2)の積分に関して
数学
-
C言語 exitの使い方
C言語・C++・C#
-
4
数字の位ごとの値を表示するプログラム
C言語・C++・C#
-
5
C言語初心者の質問失礼します。
C言語・C++・C#
-
6
c# 文字列の最後から1文字削除したい
C言語・C++・C#
-
7
C言語 配列の長さの上限
C言語・C++・C#
-
8
C言語の配列をPush(追加)するには
C言語・C++・C#
-
9
エラーの意味は? Lvalue required
C言語・C++・C#
-
10
double型からfloat型への型変換について
C言語・C++・C#
-
11
Enterキーを押されたら次の処理に移るという事をしたい。
C言語・C++・C#
-
12
int main()の・・・
C言語・C++・C#
-
13
フルパスから最後のディレクトリ名を取得したい。
Visual Basic(VBA)
-
14
複数桁10進数の*桁目だけを抽出したい
C言語・C++・C#
-
15
変数の前のビックリマークについて!
PHP
-
16
floatの有効桁数
C言語・C++・C#
-
17
関数から配列を返すには?
C言語・C++・C#
-
18
偏微分の記号∂の読み方について教えてください。
数学
-
19
c言語でのfscanfについて
C言語・C++・C#
-
20
バッファとは何ですか
C言語・C++・C#
関連するQ&A
- 1 C言語の課題がわかりません char型変数をa個、int型変数をb個、double型変数を4個使うと
- 2 double型からfloat型への型変換について
- 3 double型をfloat型に強制変換
- 4 ・struct.h struct pos3d{ double x; double y; double
- 5 C言語のfloat型変数の値代入と表示について
- 6 c言語プログラミングでキーボードからint型の変数aと変数bと変数cに値を入力し大きい順に値を表示を
- 7 c言語プログラミングでint型の変数aと変数bと変数cに値を入力し大きい順に表示したいのですが、わか
- 8 int型変数をchar型変数に格納する方法
- 9 doubleとfloatについて
- 10 doubleからfloatにすると表示が変になる
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
c言語のコンパイルエラー canno...
-
5
浮動小数点の誤差のあわせ方
-
6
C言語の型による処理速度の違い
-
7
プログラムでの数字につく”f”の...
-
8
C言語を実行すると-infが出てき...
-
9
C言語で-23乗を取り扱うには
-
10
C#イベント中の戻り値の設定の...
-
11
上三角行列の解を出力するプロ...
-
12
EXE1→DLL→EXE2数値を受け渡す方法
-
13
listに構造体を格納
-
14
至急です! マクロ定義で #defi...
-
15
difftime()について
-
16
MQL4での条件文の書き方
-
17
C言語で
-
18
int とdoubleの比較
-
19
2次元配列 CXX0030とい...
-
20
C言語のプログラムで#include<m...
おすすめ情報