Особенности вещественных чисел в Delphi

ОГЛАВЛЕНИЕ

Двоичные дроби

Для начала – немного математики. В школе мы проходим два вида дробей – простые и десятичные. Десятичные дроби, по сути дела, представляют собой разложение числа по степеням десяти. Так, запись 13.6704 означает число, равное 1*101+3*100+6*10-1+7*10-2+0*10-3+4*10-4. Но внутреннее представление всех чисел в компьютере, в том числе и вещественных – не десятичное, а двоичное. Поэтому используются двоичные дроби. Они во многом похожи на десятичные, но основание степени у них двойка. Так, число 101.1101=1*22+0*21+1*20+1*2-1+1*2-2+0*2-3+1*2-4. То есть в десятичном представлении это число равно 5.8125, в чём нетрудно убедиться с помощью любого калькулятора.

Теперь вспомним научный формат записи десятичного числа. Первым в этой записи идёт знак числа – плюс или минус. Дальше идёт так называемая мантисса – число от 1 до 10. Затем идёт экспонента – степень десяти, на которую надо умножить мантиссу, чтобы получить нужное число. Итак, уже упоминавшееся число 13.6704 запишется в этом формате как 1.36704*101 (или 1.36704E1 по принятым в компьютере правилам). Если записываемое число меньше единицы, экспонента будет отрицательной. Аналогичная запись существует и в двоичной системе. Так, 101.1101 запишется в виде 1.011101*1010 (Везде использована двоичная форма записи, так что 1010 означает 22). Именно такое представление используется в компьютере. Двоичная точка в такой записи не остаётся на одном месте, а сдвигается на величину, указанную в экспоненте, поэтому такие числа называются числами с плавающей точкой (floating point numbers).