Я прочитал много ответов, но, похоже, никто не может правильно объяснить, откуда взято слово double . Я помню очень хорошее объяснение, данное профессором университета, которое у меня было несколько лет назад.
Ссылаясь на стиль ответа VonC, точное представление с плавающей запятой single использует слово 32 бита.
- 1 бит для знака , S
- 8 бит для показателя , 'E'
- 24 бита для дроби , также называемой мантиссой или коэффициентом (хотя представлены только 23). Давайте назовем его «М» (для мантисса , я предпочитаю это имя, так как «фракция» может быть неправильно понято).
Представление:
S EEEEEEEE MMMMMMMMMMMMMMMMMMMMMMM
bits: 31 30 23 22 0
(Следует отметить, что бит знака является последним, а не первым.)
A double Точное представление с плавающей запятой использует слово 64 бит.
- 1 бит для знака , S
- 11 бит для показателя , 'E'
- 53 бита для дроби / мантиссы / коэффициента (даже если представлено только 52), 'M'
Представление:
S EEEEEEEEEEE MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
bits: 63 62 52 51 0
Как вы можете заметить, я писал, что mantissa имеет в обоих типах на один бит больше информации по сравнению с ее представлением. На самом деле, мантисса - это число, представленное без всего его несущественного значения 0
. Например,
- 0,000124 становится 0,124 × 10 −3
- 237,141 становится 0,237141 × 10 3
Это означает, что мантисса всегда будет в форме
0.α 1 α 2 ... α t × β p
где β - основа представления. Но поскольку дробь является двоичным числом, α 1 всегда будет равно 1, поэтому дробь можно переписать как 1.α 2 α 3 . ..α t + 1 × 2 p и начальная 1 может быть неявно принята, освобождая место для дополнительного бита (α t + 1 ).
Теперь очевидно, что двойное число 32 равно 64, но это не то, откуда приходит слово.
Точность указывает количество десятичных цифр, которые являются правильными , т. Е. Без какой-либо ошибки представления или аппроксимации. Другими словами, это указывает, сколько десятичных цифр можно безопасно использовать .
С учетом сказанного легко оценить количество десятичных цифр, которое можно безопасно использовать:
- одинарная точность : log 10 (2 24 ), что составляет около 7 ~ 8 десятичных цифр
- двойная точность : log 10 (2 53 ), что составляет около 15 ~ 16 десятичных цифр