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

Каков всеобъемлющий диапазон float и double в Java?

Что такое открытый диапазон float и double в Java?

Почему вам не рекомендуется использовать float или double для чего-либо, где важна точность?

4b9b3361

Ответ 1

Java Double класс содержит члены, содержащие значение Min и Max для этого типа.

2^-1074 <= x <= (2-2^-52)·2^1023 // where x is the double.

Проверьте Min_VALUE и MAX_VALUE статические конечные члены Double.

(некоторые) Люди будут предлагать против использования типов с плавающей запятой для вещей, где точность и точность являются критическими, поскольку ошибки округления могут отбрасывать вычисления с помощью измеримых (малых) сумм.

Ответ 2

Примитивные типы данных Java

булева: 1 бит. Может принимать только значения true и false.

байт: 1 подписанный байт (два дополнения). Обнаруживает значения от -128 до 127.

Короче говоря: 2 байта, подписанный (два дополнения), -32,768 до 32,767

INT: 4 байта, подписанный (два дополнения). -2,147,483,648 до 2,147,483,647.

долго: Записано 8 байтов (два дополнения). Диапазон от -9,223,372,036,854,775,808 до +9,223,372,036,854,775,807.

поплавок: 4 байта, IEEE 754. Обнаруживает диапазон от 1.40129846432481707e-45 до 3.40282346638528860e + 38 (положительный или отрицательный).

дважды: 8 байтов IEEE 754. Обнаруживает диапазон от 4.94065645841246544e-324d до 1.79769313486231570e + 308d (положительный или отрицательный).

char: 2 байта, без знака, Unicode, от 0 до 65535

Ответ 3

Двоичные числа с плавающей запятой имеют интересные прецизионные характеристики, поскольку значение сохраняется как двоичное целое число, увеличенное до двоичной мощности. При работе с субцелыми значениями (то есть значениями от 0 до 1) отрицательные мощности двух "округлять" очень отличаются от отрицательных степеней десяти.

Например, число 0,1 может быть представлено 1 x 10 -1 но нет комбинации показателя основания-2 и мантиссы, которые могут точно представлять 0,1 - ближайшее, которое вы получаете +0,10000000000000001.

Итак, если у вас есть приложение, в котором вы работаете с такими значениями, как 0,1 или 0,01, а где небольшие (менее 0,000000000000001%) ошибки не могут быть допущены, то двоичные числа с плавающей запятой не для вас.

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

Статья из документации Python по вопросам и ограничениям с плавающей запятой дает отличную работу по объяснению этой проблемы в простой для понимания форме. В Wikipedia также есть хорошая статья о плавающей запятой, которая объясняет математику за представлением.

Ответ 4

Из Типы данных примитивов:

  • float: Тип данных float представляет собой 32-разрядный IEEE 754 с одной точностью плавающая точка. Его диапазон значений выходя за рамки этого обсуждения, но указан в разделе 4.2.3Спецификации языка Java. В виде с рекомендациями для byteи short, используйте float (вместо double), если вам нужно сохранить память в больших массивах с плавающей запятой номера. Этот тип данных никогда не должен для точных значений, таких как валюта. Для этого вам нужно будет используйте java.math.BigDecimalвместо этого. Числа и Строки охватывают BigDecimal и другие полезные классы, предоставляемые Java-платформа.

  • double. Тип данных double - это 64-битный IEEE 754 с двойной точностью плавающая точка. Его диапазон значений выходя за рамки этого обсуждения, но указан в разделе 4.2.3Спецификации языка Java. Для десятичных значений этот тип данных как правило, по умолчанию. В виде упомянутый выше, этот тип данных должен никогда не используются для точных значений, таких как как валюта.

Для диапазона значений см. раздел 4.2.3 Типы, форматы и значения с плавающей запятой в JLS.

Ответ 5

Конечно, вы можете использовать float или double для "критических" вещей... Многие приложения ничего не делают, кроме чисел crunch, используя эти типы данных.

Возможно, вы неправильно поняли некоторые различные оговорки относительно чисел с плавающей запятой, такие как рекомендация никогда сравнить для точного равенства и и так далее.