Десятичное число с плавающей запятой

Десятичная арифметика с плавающей запятой (англ. Decimal floating point, DFP) — машинная арифметика для работы над десятичными числами с плавающей запятой. Работа непосредственно с десятичными дробями позволяет избежать ошибок округления цифр, которые обычно возникают при преобразовании между десятичными дробями (обычными для вводимых человеком данных, таких как результаты измерений или финансовая информация) и двоичными дробями.

Преимущество десятичного представления с плавающей запятой перед представлением с фиксированной запятой и целым числом состоит в том, что оно поддерживает гораздо более широкий диапазон значений. Например, в то время как представление с фиксированной запятой, которое выделяет 8 десятичных цифр и 2 десятичных разряда, может представлять числа:

123 456,78; 8765,43; 123,00

представление с плавающей запятой с 8 десятичными цифрами также может представлять:

1,2345678; 1 234 567,8; 0,000012345678; 12 345 678 000 000 000

и так далее. Этот более широкий диапазон может значительно замедлить накопление ошибок округления при последовательных вычислениях; например, алгоритм компенсационного суммирования Кэхэна можно использовать в числах с плавающей запятой, чтобы добавить много чисел без асимптотического накопления ошибки округления.

Реализация

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

Компьютер IBM 650 поддерживал восьмизначный десятичный формат с плавающей запятой в 1953 году[1]. Бинарная машина Wang VS поддерживала 64-битный десятичный формат с плавающей запятой в 1977 году. Motorola 68881 поддерживала формат с 17 цифрами мантиссы и 3 цифрами порядка в 1984 году, а в 1990-м библиотека поддержки чисел с плавающей запятой для процессора Motorola 68040 обеспечила совместимость с 96-битным десятичным форматом с плавающей запятой[2].

Примечания

  1. Chapter H. Historical floating-point architectures // The Mathematical-Function Computation Handbook - Programming Using the MathCW Portable Software Library. — 1. — Salt Lake City, UT, USA : Springer International Publishing AG, 2017-08-22. — P. 948. — ISBN 978-3-319-64109-6. — doi:10.1007/978-3-319-64110-2.
  2. The Decimal Floating-Point Standard. quadibloc (2018). Дата обращения: 16 июля 2018. Архивировано 3 июля 2018 года.

Литература

Ссылки