Числа с плавающей точкой (Float)

Материал из m6a
Перейти к: навигация, поиск

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

Представление чисел с плавающей точкой

Числа с плавающей точкой обычно представляются в формате, стандартизированном стандартом IEEE 754. Этот стандарт определяет несколько форматов, наиболее распространенными из которых являются:

  1. Одинарная точность (Single-precision): 32 бита.
  2. Двойная точность (Double-precision): 64 бита.

Формат IEEE 754 состоит из трех основных частей:

  1. Знак (Sign): 1 бит. Определяет знак числа (0 — положительное, 1 — отрицательное).
  2. Экспонента (Exponent): Несколько бит (8 бит для одинарной точности, 11 бит для двойной точности). Представляет порядок числа.
  3. Мантисса (Mantissa) или значащие цифры (Significand): Несколько бит (23 бита для одинарной точности, 52 бита для двойной точности). Представляет значащие цифры числа.

Формула для вычисления значения числа с плавающей точкой: $$ (-1)^{sign} \times significand \times 2^{exponent - bias} $$

Где:

  1. `sign` — бит знака.
  2. `significand` — мантисса (нормализованное значение).
  3. `exponent` — значение экспоненты.
  4. `bias` — смещение (bias), используемое для представления экспоненты как положительного числа.

Нормализация

Для увеличения точности числа с плавающей точкой нормализуются. Это означает, что мантисса представляется в виде числа между 1 (включительно) и 2 (исключительно). Например, число 0.5 представляется как $1.0 \times 2^{-1}$.

Смещение (Bias)

Экспонента представляется со смещением, чтобы избежать необходимости хранения знака экспоненты. Смещение вычисляется по формуле: $$ bias = 2^{k-1} - 1 $$

Где `k` — количество битов, используемых для представления экспоненты.

Для одинарной точности: $bias = 2^{8-1} - 1 = 127$ Для двойной точности: $bias = 2^{11-1} - 1 = 1023$

Особые значения

Стандарт IEEE 754 определяет несколько особых значений:

  1. Ноль (Zero): Представляется как все биты равные нулю.
  2. Бесконечность (Infinity): Представляется как максимальное значение экспоненты и нулевая мантисса. Используется для представления результатов, которые слишком велики для представления в виде числа с плавающей точкой.
  3. Не число (NaN - Not a Number): Представляется как максимальное значение экспоненты и ненулевая мантисса. Используется для представления результатов, которые не являются числами (например, деление нуля на ноль).

Примеры

  1. Пример представления числа 5.0 в формате одинарной точности (32 бита):
    1. Знак: 0 (положительное число)
    2. Экспонента: 129 (10000001 в двоичной системе)
    3. Мантисса: 1.25 (10100000000000000000000 в двоичной системе)
    4. Полное представление: 0 10000001 10100000000000000000000
  2. Пример представления числа -0.75 в формате одинарной точности (32 бита):
    1. Знак: 1 (отрицательное число)
    2. Экспонента: 126 (01111110 в двоичной системе)
    3. Мантисса: 1.5 (11000000000000000000000 в двоичной системе)
    4. Полное представление: 1 01111110 11000000000000000000000

Проблемы чисел с плавающей точкой

  1. Ограниченная точность: Числа с плавающей точкой имеют ограниченную точность, что может приводить к ошибкам округления.
  2. Невозможность точного представления некоторых чисел: Некоторые десятичные числа (например, 0.1) не могут быть точно представлены в двоичной системе счисления, что приводит к небольшим ошибкам при выполнении арифметических операций.
  3. Сравнение чисел с плавающей точкой: Из-за ошибок округления прямое сравнение чисел с плавающей точкой на равенство может быть ненадежным. Вместо этого рекомендуется сравнивать числа с определенной погрешностью (эпсилон).

Практические рекомендации

  1. Используйте числа с плавающей точкой двойной точности (double), если требуется высокая точность.
  2. Избегайте прямого сравнения чисел с плавающей точкой на равенство. Вместо этого сравнивайте их с определенной погрешностью.
  3. Помните об ошибках округления, особенно при выполнении большого количества арифметических операций.
  4. Используйте специализированные библиотеки, если требуется высокая точность или работа с большими числами.

Применение

Числа с плавающей точкой используются в широком спектре приложений, включая:

  1. Научные вычисления.
  2. Инженерные расчеты.
  3. Компьютерная графика.
  4. Финансовые вычисления.
  5. Игры.

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