ほとんどが float 引数を必要とする Box2D ライブラリを使用しているためです。0.00f形式を使用するコード例はたくさんありますが、それと単純な古い0.00の間に実際の違いがあるかどうかはよくわかりません。
追加のfを追加しないと、後で自分を傷つけることになりますか? スピードの事ですか?他の人が必要としないときにf加数を必要とするある種の意味合いはありますか?
TL;DR: 0.00 ではなく 0.00f を使用する必要があるのはなぜですか?
ほとんどが float 引数を必要とする Box2D ライブラリを使用しているためです。0.00f形式を使用するコード例はたくさんありますが、それと単純な古い0.00の間に実際の違いがあるかどうかはよくわかりません。
追加のfを追加しないと、後で自分を傷つけることになりますか? スピードの事ですか?他の人が必要としないときにf加数を必要とするある種の意味合いはありますか?
TL;DR: 0.00 ではなく 0.00f を使用する必要があるのはなぜですか?
サフィックスにより、f
倍精度リテラルではなく単精度 (float) リテラルになります。これは通常、64 ビット浮動小数点ではなく 32 ビットを意味します。
浮動小数点定数は、デフォルトで double 型になります。接尾辞 f または l (または F または L — 接尾辞は大文字と小文字を区別しません) を使用すると、定数をそれぞれ float または long double として指定できます。
http://msdn.microsoft.com/en-us/library/tfh6f0w2(v=VS.100).aspx
違いがあります。2.00
は typedouble
を2.00f
持ち、 type を持ちfloat
ます。これの正確な精度と形式の意味は、プラットフォームによって異なります。どちらを使用するかによってコードに実際的な違いが生じるかどうかは、使用されるコンテキストによって異なります。
明示的に型指定された (基本的な数値型の) 変数の初期化子としては違いはありませんが、関数呼び出しで使用すると、どのオーバーロードまたはテンプレートの特殊化が使用されるかに影響を与える可能性があります。
auto
明らかに、型指定子を使用した宣言で初期化子として使用したり、decltype-specifier で式として使用したりすると、宣言されているオブジェクトの型が影響を受けます。
decltype(2.00) x = 2.00f; // confusing
decltype(2.00f) y = 2.00; // also confusing
auto d = 2.00;
auto f = 2.00f;
それらを a に割り当てる限り、値はすべての数値型で正確かつ正確に表現できるfloat
ため、まったく違いはありません。
重要な違いは、for 、for 、およびforであるリテラルの型です。したがって、引数の型の推定に違いが生じます。double
2.0
float
2.0f
int
2
void foo(int) { cure_cancer(); };
void foo(float) { wipe_hard_disk(); }
void foo(double) { exit(0); }
foo(2);
foo(2.0f);
foo(2.0);
の型2.00
はdouble
、の型は2.00f
ですfloat
。
サフィックスf
はリテラル2.00
を float 型に変換し、精度を下げます。それ以外の場合、リテラルはdouble
型です。
デフォルトの仮定は ですdouble
。f
接尾辞を指定すると、それがfloat