Что означают F и D в конце числовых литералов? - PullRequest
38 голосов
/ 02 декабря 2010

Я видел некоторые из этих символов, но не могу найти в них ничего странного,

double d = 5D;
float f = 3.0F;

Что именно означают D и F за 5?

Ответы [ 6 ]

46 голосов
/ 02 декабря 2010

Означает, что эти числа являются двойными и плавающими соответственно. Предположим, у вас есть

void foo(int x);
void foo(float x);
void foo(double x);

и тогда вы звоните

foo(5)

компилятор может быть поставлен в тупик. Вот почему вы можете указать 5, 5f или 5.0 для указания типа.

18 голосов
/ 02 декабря 2010

D означает двойное

F для числа с плавающей точкой

Вы можете прочитать об основных примитивных типах Java здесь

http://download.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

Iхотел бы отметить, что написание

5.1D или 5.1: если вы не указываете букву типа для запятой, то по умолчанию это двойное значение

5: без точки, попо умолчанию это int

6 голосов
/ 02 декабря 2010

Это спецификаторы формата для чисел с плавающей запятой и двойных литералов.Когда вы пишете 1.0, вы не можете понять, хотите ли вы, чтобы литерал был плавающим или двойным.Написав 1.0f, вы сообщаете Java, что вы хотите, чтобы литерал был плавающим, а при использовании 1.0d указывается, что он должен быть двойным.Также есть L, который представляет long (например, 1L - это long 1, в отличие от int 1)

2 голосов
/ 02 декабря 2010

D обозначает двойной, а F обозначает поплавок.Иногда вам нужно будет добавить эти модификаторы, так как 5 в данном случае считается целым числом, а 3.0 - двойным.

0 голосов
/ 22 октября 2016

Как уже упоминали другие, они являются определениями типа, однако вы с меньшей вероятностью увидите упоминания i или d, так как они являются значениями по умолчанию.

float myfloat = 0.5; 

приведет к ошибке, поскольку значение по умолчанию равно двойному, и выне может выполнить автоматическое переключение с двойного на плавающее (64 -> 32 бита), но

double mydouble = 0.5;

не будет иметь проблем

0 голосов
/ 02 декабря 2010

Определяет тип данных для констант 5 и 3.0.

...