Глава 3. Базовые типы данных, переменные
41
ность в 6—7 десятичных цифр после точки, а числа типа
double
—
15—16 цифр после точки. Так как числа с плавающей точкой в компью-
тере — неточные, т. е. имеют некоторую погрешность, сравнивать их
между собой, как это можно делать с целыми числами, следует по осо-
бому правилу. Допустим, у вас имеется число 125,5. Когда вы его вве-
дете в компьютер, то число в нем будет иметь другой вид. Например,
125,500001. Даже просто из-за ошибок округления. Если теперь вы нач-
нете в программе сравнивать хранимое там число с константой
125.5
, у
вас ничего не выйдет, т. к. числа, фактически, разные. Поэтому числа с
плавающей точкой сравниваются не на полное совпадение, а на совпа-
дение с точностью до некоторого значения. Например, пусть 125,500001
хранится в некоторой переменной
flo
. Чтобы число попало в эту пере-
менную, мы должны его объявить в программе, и компилятор выделит
ему память:
float flo = 125.5;
. Или другим способом
: float flo;
flo = 125.5;
. Тогда сравнение содержимого
flo
и значения 125,5 мож-
но выполнить так: если
(flo-125.5)<0.01
, то величины равны.
Десятичный тип данных
В жизни, как известно, все сложнее, чем на бумаге. Это касается и чи-
сел. Например, вы работаете с бухгалтерскими документами, где, если
потеряешь хоть одну копейку, на которую не сходится бухгалтерский
баланс, никто у вас такой баланс не примет. Скажут, мол, мы ничего не
знаем и знать не хотим про какие-то там ваши компьютеры. Тем более,
что они работают неточно. Ищите, мол, куда вы дели эту копейку, а
найдете, приходите. Но не долго ищите, иначе лишим премии за квар-
тал. Все. Что делать? Вы бежите к программисту и начинаете у того
выяснять причины. А он пожимает плечами: мол, с целыми числами я
не могу работать, т. к. у вас в бухгалтерии числа нецелые, поэтому ра-
ботаю с нецелыми. А те в компьютере почти всегда неточны, и поэтому
в результате многочисленных вычислений накапливается ошибка. Ни-
какие искусы с округлениями чисел не спасают. Скажите, мол, спасибо,
что только одну копейку потеряли, а могли бы и больше. В добрые до-
компьютерные времена так и бывало часто. Выходили из положения кто
как мог. Но вот те, кому надо было все-таки продавать компьютеры,
додумались до такого типа данных, который бы объединял в себе дос-
тоинства целых и нецелых чисел: с одной стороны, не давал бы ошибок
вычисления, как это происходит с целыми числами, а с другой стороны,
мог бы работать и с дробными числами. Этот тип назвали
decimal
(де-
сятичный). Но чудес не бывает: выиграл в одном, проиграл в другом.
42
Do'stlaringiz bilan baham: |