Действительные числа в программировании: как компьютеры аппроксимируют вещественные числа, используя рациональные приближения и хранение числителя/знаменателя.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Реальный тип данных — это тип данных, используемый в компьютерной программе для представления приближения действительного числа. Поскольку множество действительных чисел несчетно, компьютеры не могут представить их точно, используя конечное количество информации. Чаще всего компьютер использует рациональное приближение действительного числа.
A real data type is a data type used in a computer program to represent an approximation of a real number. Because the real numbers are not countable, computers cannot represent them exactly using a finite amount of information. Most often, a computer will use a rational approximation to a real number.
Рациональные числа
Наиболее общий тип данных для рационального числа (числа, которое можно представить в виде дроби) хранит числитель и знаменатель в виде целых чисел. Например, 1/3, которое можно вычислить с любой необходимой точностью. Рациональные числа используются, например, в системе Interpress, разработанной Xerox Corporation.
The most general data type for a rational number (a number that can be expressed as a fraction) stores the numerator and the denominator as integers. For example 1/3, which can be calculated to any desired precision. Rational number are used, for example, in Interpress from Xerox Corporation.
Числа фиксированной точки
Тип данных с фиксированной точкой использует один и тот же подразумеваемый знаменатель для всех чисел. Знаменатель обычно является степенью двойки. Например, в гипотетической системе с фиксированной точкой, использующей знаменатель 65536 (2¹⁶), шестнадцатеричное число 0x12345678 (0x1234.5678 с шестнадцатью дробными битами справа от предполагаемой десятичной точки) означает 0x12345678/65536 или 305419896/65536, что равно 4660 плюс дробная часть 22136/65536, или приблизительно 4660.33777. Целое число – это число с фиксированной точкой, имеющее нулевую дробную часть.
A fixed point data type uses the same, implied, denominator for all numbers. The denominator is usually a power of two. For example, in a hypothetical fixed point system that uses the denominator 65,536 (216), the hexadecimal number 0x12345678 (0x1234.5678 with sixteen fractional bits to the right of the assumed radix point) means 0x12345678/65536 or 305419896/65536, 4660 + the fractional value 22136/65536, or about 4660.33777. An integer is a fixed point number with a fractional part of zero.
Числа с плавающей запятой
Тип данных с плавающей точкой – это компромисс между гибкостью типа данных, представляющего общие рациональные числа, и скоростью арифметики с фиксированной точкой. Он использует часть битов в типе данных для указания экспоненты знаменателя, которая обычно является степенью двойки, хотя в прошлом использовались также степени десяти и шестнадцати.
A floating point data type is a compromise between the flexibility of a general rational number data type and the speed of fixed point arithmetic. It uses some of the bits in the data type to specify an exponent for the denominator, today usually power of two although both ten and sixteen have been used.
Десятичные числа
Десятичный тип данных аналогичен типам фиксированной или плавающей точки, но имеет знаменатель, являющийся степенью 10, а не степенью 2.
The decimal type is similar to fixed point or floating point data type, but with a denominator that is a power of 10 instead of a power of 2.