Подтвердить что ты не робот

Почему f помещается после значений float?

Я не знаю, почему f или F помещаются после значений float на Java или на другие языки? например,

float fVariable = 12.3f;

любые функции, отличные от указания того, что это значение поплавка?

4b9b3361

Ответ 1

по умолчанию 12.3 является double literal, поэтому, чтобы сообщить компилятору, что он явно float → использует f или f

Ответ 2

Увидев, что в вашей программе есть только так много способов представить число, разработчикам Java пришлось выбирать и назначать каждую форму в наиболее распространенный прецедент. Для тех форм, которые выбраны по умолчанию, суффикс, который обозначает точный тип, является необязательным.

  • Для целых литералов (int, long) значение по умолчанию - int. Для очевидных причины.
  • Для литералов с плавающей запятой (float, double) значение по умолчанию двойное. Поскольку использование double потенциально позволяет более безопасную арифметику на сохраненные значения.

Итак, когда вы вводите 12 в свою программу, это int literal, в отличие от 12L, который длинный. И когда вы набираете 12.3, это двойной литерал, а не 12.3F, который является float.

Итак, где это актуально? В первую очередь, при обработке понижающих преобразований или сужении конверсий. Всякий раз, когда вы опускаете длинный путь до int или double-float, существует вероятность потери данных. Таким образом, компилятор заставит вас указать, что вы действительно хотите выполнить сужение преобразования, сигнализируя ошибку компиляции для чего-то вроде этого:

float f = 12.3;

Поскольку 12.3 представляет собой double, вы должны явно передать его в float (в основном, подписываясь на сужение преобразования). В противном случае вы могли бы указать, что число действительно является float, используя правильный суффикс;

float f = 12.3f;

Так что слишком суммировать, нужно указать суффикс для longs и floats - это компромисс, который выбрали разработчики языка, чтобы сбалансировать необходимость указать, что именно такое число, с гибкостью преобразования чисел из одного типа хранилища в другой.

Ответ 3

float и double могут предоставлять приблизительные значения представления для некоторых значений. например 12,3 или 0,1

Разница заключается в том, что float не такой точный (поскольку он имеет меньшую точность, поскольку его меньше)

например.

System.out.println("0.1f == 0.1 is " + (0.1f == 0.1));
System.out.println("0.1f is actually " + new BigDecimal(0.1f));
System.out.println("0.1 is actually " + new BigDecimal(0.1));

печатает

0.1f == 0.1 is false
0.1f is actually 0.100000001490116119384765625
0.1 is actually 0.1000000000000000055511151231257827021181583404541015625

Итак, 0.1 является самым близким представлением в double, а 0.1f является ближайшим представлением в float

Ответ 4

float fVariable = 12.3; Это хорошо. но когда вы используете только значение float (без какого-либо идентификатора) в любом выражении, которое вам нужно сообщить компилятору, это значение равно float, поэтому мы используем суффикс "f" после значения. Пример

float fl = 13f/5f;

здесь 13 и 5 - значения с плавающей запятой.

Ответ 5

Во время компиляции все числа с плавающей запятой (числа с десятичной точкой) по умолчанию удваиваются.

Поэтому, если вы не хотите, чтобы ваш номер удваивался и просто хотел, чтобы он был как float, вы должны явно сообщить компилятору, добавив f или F в конец константы литерала.

Ответ 6

Float - это 32-битная 32-битная плавающая точка IEEE 754 с двойной точностью, а Double - 64-битная с плавающей точкой IEEE 754 с двойной точностью. Когда вы используете значение с десятичными точками, и если вы не укажете его как 0,23f (в частности, float), java идентифицирует его как double.

Для десятичных значений двойной тип данных обычно является выбором по умолчанию, выбранным java. Проверить это