これについての情報が欲しかっただけです。
float n = 2.99944323200023f
リテラルの最後にあるは何をしf
ますか? それはなんと呼ばれていますか?なぜ使用されるのですか?
これについての情報が欲しかっただけです。
float n = 2.99944323200023f
リテラルの最後にあるは何をしf
ますか? それはなんと呼ばれていますか?なぜ使用されるのですか?
はf
、それが二重リテラルではなく、浮動小数点リテラルであることを示します (それ以外の場合は暗黙的にそうなります)。私が知っている特定の技術名はありません。参照する必要がある場合は、「文字サフィックス」と呼ぶ傾向があります。具体的には、それはやや恣意的ですが!
例えば:
float f = 3.14f; //Compiles
float f = 3.14; //Doesn't compile, because you're trying to put a double literal in a float without a cast.
もちろん、次のこともできます。
float f = (float)3.14;
...これはほぼ同じことを達成しますが、F はそれを示すよりきちんとした、より簡潔な方法です。
float ではなく double がデフォルトとして選択されたのはなぜですか? まあ、最近では float に対する double のメモリ要件は 99% のケースで問題ではなく、それらが提供する追加の精度は多くの場合に有益です - したがって、それが賢明なデフォルトであると主張することができます.
d
末尾に a を追加することで、10 進リテラルを double として明示的に表示できることに注意してください。
double d = 3.14d;
...しかし、とにかく double 値であるため、これは効果がありません。リテラル型の意味をより明確にすることを主張する人もいるかもしれませんが、個人的には、コードが乱雑になるだけだと思います (おそらく、多くの float リテラルがぶらぶらしていて、このリテラルが実際に double であることを強調したい場合を除きます)。 、および f の省略は単なるバグではありません。)
Java が float 変数に使用するデフォルトの Java 型は double になります。したがって、変数を float として宣言したとしても、コンパイラが実際に行う必要があるのは、double 値を float 変数に代入することですが、これは不可能です。したがって、この値を float として扱うようにコンパイラに指示するには、使用されている。
Java では、10 進数を として入力すると3.6
、 として解釈されますdouble
。double
は 64 ビット精度の IEEE 754 浮動小数点で、float
は 32 ビット精度の IEEE 754 浮動小数点です。afloat
は a よりも精度が低いためdouble
、変換を暗黙的に実行することはできません。
フロートを作成する場合は、番号をf
(つまり: 3.6f
) で終了する必要があります。
詳細については、Java チュートリアル のプリミティブ データ型の定義を参照してください。
浮動小数点数と倍精度数を区別するためです。後者には接尾辞がありません。
1.0 と書くと、リテラルを float にするつもりか double にするつもりか曖昧です。1.0f を記述することで、リテラルを float にするつもりであることを Java に伝えますが、1.0d を使用すると double であることを指定します (明示的に指定しない場合のデフォルトでもあります)。
最後に「f」を付ける必要があります。そうしないと、Java は double と見なします。
Oracle Javaチュートリアルから、浮動小数点リテラルの下のプリミティブデータ型のセクション
浮動小数点リテラルは、文字 F または f で終わる場合は float 型です。それ以外の場合、その型は double であり、オプションで文字 D または d で終わることができます。
最後に が正確でない場合f
、値は a と見なされますdouble
。また、 adouble
は よりもメモリ内のバイト数が多くなりますfloat
。