Программирование на JAVA
Меню :
Стартовая
Основы программирования
Программирование на JAVA
Программирование на C++
Программирование на Pascal
Задачи по программированию
В противном случае он рассматривается как значение типа double и может включать в себя окончание D или d, как признак типа double (используется только для наглядности).
//float-литералы:
1f, 3.14F, Of, 1e+5F
// double-литералы:
0., 3.14d, 1e-4, 31.34E45D
В Java дробные числа 32-битного типа float и 64-битного типа double хранятся в памяти в бинарном виде в формате, стандартизированном спецификацией IEEE 754 (полное название — IEEE Standard for Binary Floating-Point Arithmetic, ANSI/IEEE Standard 754-1985 (IEEE, New York)). В этой спецификации описаны не только конечные дробные величины, но и еще несколько особых значений, а именно:
• положительная и отрицательная бесконечности (positive/negative infinity);
• значение "не число", Not-a-Number, сокращенно NaN;
• положительный и отрицательный нули.
Для этих значений нет специальных обозначений. Чтобы получить такие величины, необходимо либо произвести арифметическую операцию (например, результатом деления ноль на ноль 0.0/0.0 является NaN), либо обратиться к константам в классах Float и Double, а именно POSIT1VEJNFINITY, NEGATIVEJNFINITY и NaN. Более подробно работа с этими особенными значениями рассматривается в следующей лекции.
Типы данных накладывают ограничения на возможные значения литералов, как и для целочисленных типов. Максимальное положительное конечное значение дробного литерала:
• для float: 3.40282347e+38f
• для double: 1.79769313486231570е+308
Кроме того, для дробных величин становится важным еще одно Предельное значение — минимальное положительное ненулевое значение:
• для float: 1.40239846e-45f
• для double: 4.94065645841246544e-324
Попытка указать литерал со слишком большим абсолютным значением (например, 1 e40F) приведет к ошибке компиляции. Такая величина должна представляться бесконечностью. Аналогично, указание литерала со слишком малым ненулевым значением (например, 1е-350) также приводит к ошибке. Это значение должно быть округлено до нуля. Однако если округление приводит не к нулю, то компилятор произведет его сам:
// ошибка, выражение должно быть округлено до О
0.0000000000000000000000000000000000000000000001f
// ошибки нет, компилятор сам округляет до 1
1.0000000000000000000000000000000000000000000001f