Java Гарантируются ли ненормализованные числа? - PullRequest
3 голосов
/ 01 августа 2020

Указывает ли стандарт Java что-нибудь на точное поведение чисел с плавающей запятой?

Есть ли гарантия, что он будет использовать ненормализованные числа? Существуют константы Float.MIN_VALUE и Float.MIN_NORMAL, но что происходит, когда оборудование не обрабатывает ненормализованные числа?

В более конкретном случае, гарантирую ли я, что в системе x86 / 64 каждый Реализация java не отключает ненормализованные значения?

Могу ли я отключить это поведение и считать все ненормализованные числа нулевыми?

1 Ответ

3 голосов
/ 01 августа 2020

Раздел 4.2.4 спецификации языка Java требует поддержки денормализованных чисел:

В частности, для языка программирования Java требуется поддержка IEEE 754 денормализованных чисел с плавающей запятой и постепенного потери значимости , что упрощает доказательство желаемых свойств конкретных численных алгоритмов. Операции с плавающей запятой не сбрасывают sh в ноль, если вычисленный результат является денормализованным числом.

Если оборудование не обрабатывает ненормализованные числа, это должно быть исправлено в программном обеспечении в JVM, чтобы он соответствовал спецификации.

...