Международный стандарт представления чисел с плавающей точкой в ЭВМ
Материал из MachineLearning.
(→Числа с плавающей точкой) |
(→Числа с плавающей точкой) |
||
Строка 11: | Строка 11: | ||
Параметрами такой формы представления является основание степени <tex>\beta</tex> (''base'') и точность <tex>p</tex> (''precision''). | Параметрами такой формы представления является основание степени <tex>\beta</tex> (''base'') и точность <tex>p</tex> (''precision''). | ||
При этом всегда требуется, чтобы основание степени было целым чётным числом. | При этом всегда требуется, чтобы основание степени было целым чётным числом. | ||
- | Если <tex>$\beta=10$</tex> и <tex>$p=3$</tex>, то число 0.1 представляется в виде <tex>$1.00\times 10^{-1}$</tex>. | + | Если <tex>$\beta=10$</tex> и <tex>$p=3$</tex>, то число 0.1 представляется в виде |
+ | <tex>$1.00\times 10^{-1}$</tex>. | ||
+ | Однако, очевидно, что при определённых параметрах некоторые числа не удастся представить точно. Например, при <tex>$\beta=2$</tex> и <tex>$p=24$</tex> то же самое число 0.1 представляется приблизительно в виде <tex>1.10011001100110011001101\times 2^{-4}</tex> (поскольку в бинарном представлении число 0.1 имеет бесконечный вид). | ||
- | + | В общем случае при заданных параметрах запись вида | |
<tex>$d_0.d_1d_2 \dots d_{p-1}\times\beta^e$</tex> | <tex>$d_0.d_1d_2 \dots d_{p-1}\times\beta^e$</tex> | ||
представляет число | представляет число | ||
::<tex>$\pm\left(d_0+d_1\beta^{-1}+d_2\beta^{-2}\dots+d_{p-1}\beta^{p-1}\right)\beta^e,\ ( 0\leq d_i<\beta )$</tex> | ::<tex>$\pm\left(d_0+d_1\beta^{-1}+d_2\beta^{-2}\dots+d_{p-1}\beta^{p-1}\right)\beta^e,\ ( 0\leq d_i<\beta )$</tex> | ||
+ | |||
+ | При этом <tex>d_0.d_1d_2 \dots d_{p-1}</tex> называется ''мантиссой'' числа и состоит из <tex>p</tex> позиций. | ||
+ | В дальнейшем под числом с плавающей точкой мы будем понимать дробные числа точно представимые в смысле данной формы. | ||
+ | |||
+ | Существуют ещё два важных параметра — максимальный и минимальный показатели степени <tex>$e_{max}$</tex> и <tex>e_{min}</tex>. | ||
+ | Таким образом, при фиксированных параметрах мы можем представить | ||
+ | <tex>$2\left(e_{max}-e_{min}+1\right)\beta^p$</tex> | ||
+ | разных чисел с учётом знака. | ||
+ | |||
+ | Здесь возникает проблема - что делать с числами, не представимыми точно. | ||
+ | Чаще всего такая ситуация возникает при попытке представить числа, имеющие слишком длинное или вообще бесконечное представление (пример с 0.1). | ||
+ | В этом случае нужное нам число лежит где-то между двумя числами с плавающей точкой и будет представляться одним из них. | ||
+ | Реже встречается попытка использовать числа, меньшие, чем <tex>1.0\times\beta^{e_{min}}</tex>, или большие, чем <tex>\beta.0\times\beta^{e_{max}}</tex>. | ||
+ | Подробнее об этом речь пойдёт в пункте | ||
== Числовой пример == | == Числовой пример == |
Версия 19:02, 18 октября 2008
Содержание |
Введение
Практически любой язык программирования даёт возможность использовать в вычислениях дробные числа. Когда дело касается программной реализации численных методов или любых других вычислений на ЭВМ, важным вопросом является внутреннее представление чисел, с которым приходится работать программисту. От этого главным образом зависит точность вычислений,а также их скорость.
В этом отчёте будут рассматриваться те аспекты представления чисел в ЭВМ, которые важны пользователям, желающим активно работать с дробными величинами. Также будет рассмотрен наиболее часто используемый стандарт IEEE 754. В заключение будут приведены способы доступа к основным параметрам представления дробных чисел в ряде языков программирования (C,C++,Fortran,Pascal).
Числа с плавающей точкой
Числа с плавающей точкой - общепринятая форма представления дробных чисел в ЭВМ. Параметрами такой формы представления является основание степени (base) и точность (precision). При этом всегда требуется, чтобы основание степени было целым чётным числом. Если и , то число 0.1 представляется в виде . Однако, очевидно, что при определённых параметрах некоторые числа не удастся представить точно. Например, при и то же самое число 0.1 представляется приблизительно в виде (поскольку в бинарном представлении число 0.1 имеет бесконечный вид).
В общем случае при заданных параметрах запись вида представляет число
При этом называется мантиссой числа и состоит из позиций. В дальнейшем под числом с плавающей точкой мы будем понимать дробные числа точно представимые в смысле данной формы.
Существуют ещё два важных параметра — максимальный и минимальный показатели степени и . Таким образом, при фиксированных параметрах мы можем представить разных чисел с учётом знака.
Здесь возникает проблема - что делать с числами, не представимыми точно. Чаще всего такая ситуация возникает при попытке представить числа, имеющие слишком длинное или вообще бесконечное представление (пример с 0.1). В этом случае нужное нам число лежит где-то между двумя числами с плавающей точкой и будет представляться одним из них. Реже встречается попытка использовать числа, меньшие, чем , или большие, чем . Подробнее об этом речь пойдёт в пункте
Числовой пример
Рекомендации программисту
Заключение
Список литературы
- David Goldberg. What Every Computer Scientist Should Know About Floating-Point Arithmetic. ACM Computing Surveys, Vol. 23, No. 1 (March 1991), pages 5--48.