Часть I. Базовые сведения о программировании на языке C#
Тип данных с плавающей точкой
Мы только что рассмотрели разные типы целых чисел. Но в жизни
очень небольшой процент задач может работать с целыми числами.
Больше все-таки приходится работать с нецелыми или, как их еще на-
зывают,
вещественными
(или действительными) числами. Для таких
чисел в языке тоже существуют свои ключевые слова, задающие тип
чисел. Представление таких чисел в памяти компьютера называется
представлением
числа
с плавающей точкой
(иногда называют "с пла-
вающей запятой"). Если целое число располагается в памяти, выделен-
ной ему компилятором в соответствии с его указанным типом при объ-
явлении в виде последовательности цифр в записи числа (для простоты
понимания: на самом деле это не всегда так, потому что числа пред-
ставляются в виде определенных кодов), то число с плавающей точкой
представляется в выделенной для него компилятором памяти в виде
двух частей: одна часть называется
мантиссой
. Она по абсолютной ве-
личине всегда меньше единицы. А другая часть называется
порядком
числа
. Например, число 125,5 можно записать в виде 0,1255
×
10
3
. Здесь
0,1255 — мантисса, а 3 — порядок числа. Вот это число и станет хра-
ниться в отведенной для него области памяти так: знак мантиссы —
мантисса — знак порядка — порядок. Вот тут еще раз видно, как важно
в программе задавать тип данного. Для задания типа чисел с плавающей
точкой существуют два ключевых слова:
float
и
double
. Если для
float
компилятор выделяет восемь байтов памяти, то для
double
— шестна-
дцать. Надо помнить, что арифметические операции с числами с пла-
вающей точкой не точны, т. е. имеют определенную погрешность в от-
личие от операций с целыми числами. Например, делим одно число на
другое. Нацело не делится. Значит, надо где-то остановиться и отбро-
сить "хвост", не помещающийся в область памяти, отведенной для чис-
ла. Вот уже и неточность возникла. Неточность возникает и при выпол-
нении операций, при которых приходится выравнивать порядки чисел и
за счет этого сдвигать их мантиссы, чтобы число не изменилось. При
сдвиге мантиссы тоже теряются разряды числа. Опять возникает неточ-
ность. А когда надо выравнивать порядки чисел? Например, при опера-
ции сложения: если у операндов разные порядки, то их сначала надо
выровнять (соответственно, чтобы число не изменилось, надо мантиссу
сдвинуть влево или вправо на число разрядов, на которое изменился ее
порядок), потом сложить мантиссы и к сумме добавить общий порядок.
Но чем больше область памяти для хранения числа, тем большее коли-
чество цифр дробной части можно хранить в этой области. То есть тем
число будет с более высокой точностью. Числа типа
float
имеют точ-
Do'stlaringiz bilan baham: |