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

Двоичное представление с плавающей запятой IEEE 754. Сначала мы опишем, как представляются числа с плавающей запятой. Java использует подмножество двоичного стандарта с плавающей запятой IEEE 754 для представления чисел с плавающей запятой и определения результатов арифметических операций. Практически все современные компьютеры соответствуют этому стандарту. Число с плавающей запятой представлено 32 битами, и каждая возможная комбинация битов представляет одно действительное число. Это означает, что можно точно представить не более 232 возможных действительных чисел, даже если существует бесконечно много действительных чисел (даже от 0 до 1). Стандарт IEEE использует внутреннее представление, подобное экспоненциальному представлению, но в двоичном формате вместо основания 10. Оно охватывает диапазон от ±1,40129846432481707e-45 до ±3,40282346638528860e+38. с 6 или 7 значащими десятичными цифрами, включая плюс бесконечность, минус бесконечность и NaN (не число). Число содержит знаковый бит s (интерпретируемый как плюс или минус), 8 битов для показателя степени e и 23 бита для мантиссы M. Десятичное число представляется в соответствии со следующей формулой.

Стандарт IEEE 754

Он использует 3 компонента.

  1. Бит знака: - 0 для положительного, 1 для отрицательного
  2. Экспонента: - Представляет число битов в 2^n.
  3. Мантисса: двоичное представление научной нотации для чисел с основанием 2. Мы возьмем биты после запятой.

Ошибка округления. Для непосвященных программирование с числами с плавающей запятой может быть запутанным и опасным. Если ответ не находится за пределами диапазона целых чисел, которые могут быть представлены, арифметика с целыми числами является точной (переполнение). Напротив, арифметика с плавающей запятой не является точной, потому что некоторые действительные числа, такие как математические константы e и 1/3, требуют для представления бесконечного числа цифр. Большинство новых Java-программистов с удивлением узнают, что 1/10 также не может быть точно представлена ​​в стандартных двоичных числах с плавающей запятой. Эти ошибки округления могут неожиданным образом распространяться по всему расчету.

Очки, чтобы помнить

  • Поплавок охватывает диапазон от 1,40129846432481707e-45 до 3,40282346638528860e+38 (положительное или отрицательное).
  • Его значение по умолчанию равно 0.0f.
  • Его размер по умолчанию составляет 4 байта.
  • Его можно использовать для экономии памяти в больших массивах чисел с плавающей запятой.
  • Использование числа с плавающей запятой для точных значений, таких как валюта, не является хорошим подходом.