Числа с плавающей точкой представляют десятичные значения с дробной частью. Они могут быть выражены в стандартной или экспоненциальной ( или научной) форме записи.
Число в стандартной форме записи состоит из целого числа с последующей десятичной точкой и дробной частью.
Например, значения 4.0, 3.14159 и 0.8869 представляют допустимые числа с плавающей точкой в стандартной записи. В экспоненциальной форме записи используется стандартная форма записи чисел с плавающей точкой, дополненная суффиксом, обозначающим степень числа 10 , на которую следует умножить данное число.
Для указания экспоненциальной части в данной форме записи используется символ Е или е, за которым следует десятичное число (положительное или отрицательное ) . Примерами такой формы записи могут служить значения 7.044E25, 3.14159E-07 и 3e+110.
По умолчанию в Java литералам с плавающей точкой присваивается тип double. Чтобы указать литерал типа float, его следует дополнить символом F или f.
Литерал типа double можно также указать явно, дополнив символом D или d. Но это, конечно, излишне.
Значения используемого по умолчанию типа double занимают в оперативной памяти 64 бита, тогда как для хранения значений более короткого типа float требуется только 32 бита.
Шестнадцатеричные литералы с плавающей точкой также поддерживаются, но они применяются редко. Они должны быть записаны в форме, подобной экспоненциальному представлению, но с обозначением Р или р вместо Е или е.
Например, 0xAA.21P7 вполне допустимый шестнадцатеричный литерал с плавающей точкой. Значение после буквы Р называется двоичным порядхом и обозначает степень числа два, на которое умножается заданное число. Поэтому литерал 0xAA.21P7 представляет число 21776.5.
Начиная с версии JDK 7 в литералы с плавающей точкой можно вводить один знак подчеркивания или больше, подобно описанному выше в отношении целочисленных литералов.
Знаки подчеркивания облегчают чтение больших литералов с плавающей точкой. При компиляции символы подчеркивания игнорируются. Например, в следующей строке кода:
1 |
double number = 123_456_789.256; |
переменной number присваивается значение 123456789.256. Знаки подчеркивания будут проигнорированы. Как и в целочисленных литералах, знаки подчеркивания могут служить только для разделения цифр. Их нельзя указывать в начале или в конце литералов, но вполне допустимо между двумя цифрами, причем не один, а несколько.
Знаки подчеркивания допустимо также указывать в дробной части числа. Например, следующая строка кода считается правильной:
1 |
double number = 123_456_789.2_5_7; |
В данном случае дробная часть составляет .257.