пятница, 24 декабря 2010 г.

Числовые типы данных 2

Сегодня опять выдалась свободная минут в процессе подготовки к сессии. Что-то в этом году она какая-то уж слишком напряженная – никак не могу все сдать. Думаю, что все нормально получится, так что переживать особо не надо, но и расслабляться (пока) не стоит, а то вообще все оставшееся не сдам.

Сегодня я расскажу вам про два типа данных – BINARY_FLOAT и BINARY_DOUBLE. В самое ближайшее время постараюсь еще продолжить рассказ о новых технологиях от компании Microsoft. Ладно – перейдем к непосредственно самой теме статьи, а про планы немного расскажу в самом конце.

Типы данных BINARY_FLOAT и BINARY_DOUBLE

Эти типы данных представляют числа с плавающей точкой с одинарной или удвоенной точностью соответственно.

Значения, принадлежащие типу данных BINARY_FLOAT заканчиваются символом f (например – 3,2f), а значения BINARY_DOUBLE – символом d (например – 7,00004d).

При выполнении со значениями, принадлежащими  этим типам, исключений не инициализируется. Поэтому  необходимо проверять результирующие значения на переполнение и потерю точности , используя для этого следующие предопределенные константы (надо сравнивать их с получившимися значениями):

Константы
Описание
BINARY_FLOAT_NAN
Значение BINARY_FLOAT, для которого истинно условие IS NAN (Not A Number)
BINARY_FLOAT_INFINITY
Значение BINARY_FLOAT, принадлежащее плюс бесконечности, для которых это условие истинно
BINARY_FLOAT_MAX_NORMAL
Самое большое конечное число, которое находится прямо перед порогом переполнения
BINARY_FLOAT_MIN_NORMAL
Наименьшее число, которое находится за один шаг до порога переполнения
BINARY_FLOAT_MAX_SUBNORMAL
Максимальное положительное число до порога переполнения
BINARY_FLOAT_MIN_SUBNORMAL
Самое минимальное число (которое можно отобразить)
BINARY_DOUBLE_NAN
Значение BINARY_DOUBLE, для которого истинно условие IS NAN (Not A Number)
BINARY_DOUBLE_INFINITY
Значение BINARY_ DOUBLE, принадлежащее плюс бесконечности, для которых это условие истинно
BINARY_DOUBLE_MAX_NORMAL
Самое большое конечное число, которое находится прямо перед порогом переполнения
BINARY_DOUBLE_MIN_NORMAL
Наименьшее число, которое находится за один шаг до порога переполнения
BINARY_DOUBLE_MAX_SUBNORMAL
Максимальное положительное число до порога переполнения
BINARY_DOUBLE_MIN_SUBNORMAL
Самое минимальное число (которое можно отобразить)

Типы данных
BINARY_FLOAT и BINARY_DOUBLE используются в основном для вычислений в научных целях, где требуются высокие скорости.

Типы данных SIMPLE_FLOAT и SIMPLE_DOUBLE – это предопределенные подтипы типов BINARY_FLOAT и BINARY_DOUBLE соответственно. Каждый подтип имеет такой же диапазон значений, что и его базовый тип и дополнительно имеет ограничение NOT_NULL.

Тип данных NUMBER

Этот тип данных используется для хранения чисел с фиксированной или плавающей точкой, модули которых должны находиться в диапазоне значений от 1Е-130 до 1.0Е126 (и ноль конечно).

Рекомендуемся использовать значения (и результаты вычислений) входящие в допустимый диапазон типа NUMBER. Если значения выходят за эти пределы произойдет следующее:
  • Любое слишком маленькое значение округляется до 0;
  • Если значение слишком велико – инициируется исключение;
  • Если результаты значений слишком велики – они становятся неопределенными и приводят к непредсказуемым результатам во время выполнения программы
Для значений типа NUMBER можно указать общее количество знаков и количество знаков после запятой:

NUMBER (общее число, число после запятой)
NUMBER (5, 2)

Если представляем целое число – то количество знаков после запятой просто не нужно писать (оно равно нулю):

NUMBER (3)

А если просто записать NUMBER – то есть без указания каких-либо чисел, так мы зададим формат с плавающей точкой.

И еще предлагаю рассмотреть предопределенные подтипы типа данных NUMBER:

Тип данных
Описание
DEC, DECIMAL, NUMERIC
Числа NUMBER с фиксированной точкой с размерностью в 38 десятичных знаков
DOUBLE PRECISION
или FLOAT
Числа NUMBER с плавающей точкой с максимальной точностью (38 десятичных разрядов)
INT, INTEGER, SMALLINT
Целые числа с максимальной точностью 38 десятичных разрадов
REAL
Числа NUMBER с плавающей точкой с максимальной точностью 18 десятичных разрядов

На этом мы закончим рассматривать числовые типы данных. До Нового Года я еще напишу о следующих типах данных (символьных наверно). Так что это не все. И еще – вот где вы лечите своих домашних животных (не по теме немного)? Например – есть хороший ветеринарный врач – поможет при многих заболеваниях ваших кошечек и собачек. Пока не обращался, у меня все здоровы.

2 комментария:

  1. "BINARY_FLOAT заканчиваются символом а (например – 3,2f)". Так все таки, каким символом заканчиваются a или f ?

    ОтветитьУдалить
  2. Это у меня пунто свитчер сработал. Такие числа заканчиваются символом F (английским символом)

    ОтветитьУдалить