19

これについての情報が欲しかっただけです。

float n = 2.99944323200023f

リテラルの最後にあるは何をしfますか? それはなんと呼ばれていますか?なぜ使用されるのですか?

4

10 に答える 10

21

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 の省略は単なるバグではありません。)

于 2012-12-04T13:30:03.020 に答える
6

Java が float 変数に使用するデフォルトの Java 型は double になります。したがって、変数を float として宣言したとしても、コンパイラが実際に行う必要があるのは、double 値を float 変数に代入することですが、これは不可能です。したがって、この値を float として扱うようにコンパイラに指示するには、使用されている。

于 2012-12-04T13:29:46.973 に答える
2

Java では、10 進数を として入力すると3.6、 として解釈されますdoubledoubleは 64 ビット精度の IEEE 754 浮動小数点で、floatは 32 ビット精度の IEEE 754 浮動小数点です。afloatは a よりも精度が低いためdouble、変換を暗黙的に実行することはできません。

フロートを作成する場合は、番号をf(つまり: 3.6f) で終了する必要があります。

詳細については、Java チュートリアル のプリミティブ データ型の定義を参照してください。

于 2012-12-04T13:33:06.813 に答える
1

浮動小数点数と倍精度数を区別するためです。後者には接尾辞がありません。

于 2012-12-04T13:29:51.247 に答える
1

1.0 と書くと、リテラルを float にするつもりか double にするつもりか曖昧です。1.0f を記述することで、リテラルを float にするつもりであることを Java に伝えますが、1.0d を使用すると double であることを指定します (明示的に指定しない場合のデフォルトでもあります)。

于 2012-12-04T13:29:55.927 に答える
1

最後に「f」を付ける必要があります。そうしないと、Java は double と見なします。

于 2012-12-04T13:29:58.500 に答える
1

これは、倍精度ではなく単精度の浮動小数点リテラルであることを意味します。それ以外の場合は、double を single にキャストするように記述する必要があります。float n = (float)2.99944323200023;

于 2012-12-04T13:30:09.323 に答える
1

Oracle Javaチュートリアルから、浮動小数点リテラルの下のプリミティブデータ型のセクション

浮動小数点リテラルは、文字 F または f で終わる場合は float 型です。それ以外の場合、その型は double であり、オプションで文字 D または d で終わることができます。

于 2012-12-04T13:30:15.573 に答える
1

最後に が正確でない場合f、値は a と見なされますdouble。また、 adoubleは よりもメモリ内のバイト数が多くなりますfloat

于 2012-12-04T13:30:42.027 に答える