Типы данных с плавающей точкой представляют числа с дробной частью. В Java имеются два числовых типа данных с плавающей точкой. Они приведены в табл. 3.2.
Таблица 3.2. Числовые типы данных с плавающей точкой в Java
Тип
Требуемый объем памяти (байт)
Диапазон допустимых значений (включительно)
float
4
Приблизительно
±3,40282347E+38F
|б-7
значащих де-
сятичных цифр)
double
8
Приблизительно
±1,7976931348623157E+308F
(15 зна-
чащих
десятичных цифр)
Название double означает, что точность таких чисел вдвое превышает точность чисел типа float. (Некоторые называют их числами с двойной точностью.) Для большинства приложений тип double считается более удобным, а ограниченной точности чисел типа float во многих случаях оказывается совершенно недостаточно. Семи значащих (десятичных) цифр, возможно, хватит для того, чтобы точно представить ваш годовой доход в местной валюте, но вряд ли — доход президента вашей компании. Причинами, по которым тип float все еще применяется, служат скорость обработки числовых данных (для чисел типа float она выше), а также экономия памяти для хранения данных (это важно для больших массивов вещественных чисел).
Числовые значения типа float указываются с суффиксом F, например 3.14F. А числовые значения с плавающей точкой, указываемые без суффикса F (например, 3.14), всегда рассматриваются как относящиеся к типу double. Для их представления можно (но не обязательно) использовать суффикс D, например 3.14D.
НА ЗАМЕТКУ! Числовые литералы с плавающей точкой могут быть представлены в шестнадцатеричной форме. Например, числовое значение 0,125 = 2"3 можно записать как 0х1.0р-3. В шестнадцатеричной форме для выделения показателя степени числа служит обозначение р, а не е, поскольку е — шестнадцатеричная цифра. Обратите внимание на то что, что дробная часть числа записывается в шестнадцатеричной форме, а показатель степени — в десятичной, тогда как основание показателя степени — 2, но не 10.
Все операции над числами с плавающей точкой производятся по стандарту IEEE 754. В частности, в Java имеются три специальных значения с плавающей точкой:
• POSITIVEINFINITY (положительная бесконечность);
• NEGATIVEINFINITY (отрицательная бесконечность);
• NaN (не число).
Например, результат деления положительного числа на 0 равен положительной бесконечности. А вычисление выражения 0/0 или извлечение квадратного корня из отрицательного числа дает нечисловой результат NaN.
НА ЗАМЕТКУ! В Java существуют константы Double. POSITIVE_INFINITY, Double.NEGATIVE_ INFINITY и Double.NaN (а также соответствующие константы типа float). Но на практике они редко применяются. В частности, для того, чтобы убедиться, что некоторый результат равен константе Double.NaN, нельзя выполнить приведенную ниже проверку.
if (х == Double.NAN) // никогда не будет истинно
Все величины, "не являющиеся числами", считаются разными. Но в то же время можно вызвать метод Double. isNaN (), как показано ниже.
if (Double.isNaN(х)) // проверить, не является ли числом значение переменной х
ВНИМАНИЕ! Числа с плавающей точкой нельзя использовать в финансовых расчетах, где ошибки округления недопустимы. Например, в результате выполнения оператора System.out. println(2.0 - 1.1) будет выведено значение 0.8999999999999999, а не 0.9, как было бы логично предположить. Подобные ошибки связаны с внутренним двоичным представлением чисел. Как в десятичной системе счисления нельзя точно представить результат деления 1/3, так и в двоичной системе невозможно точно представить результат деления 1/10. Если же требуется исключить ошибки округления, то следует воспользоваться классом BigDecimal, рассматриваемым далее в главе.
Опубликовал Kest
November 18 2014 00:33:53 ·
0 Комментариев ·
3463 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.