Тип данных оракула = число, как показатель степени связан с точностью и масштабом? - PullRequest
1 голос
/ 26 августа 2011

Я пытался понять, что база данных Oracle использует тип данных = число.Я наткнулся на следующую ссылку:

ask tom

, и у меня возникли проблемы с ее интерпретацией.Я должен отметить, что у меня нет опыта работы с Oracle, но я подхожу к этому из опыта Matlab.Я понимаю, что числовой тип данных имеет точность и масштаб.Что я не понимаю, так это то, как здесь рассматривается показатель.Показатель степени отдельно от точности и масштаба?Или показатель ограничен точностью и масштабом?

Вот мое замешательство - приведенная выше ссылка начинается с:

В: Я объявил тип данных столбца таблицы как NUMBER & Presumedэто должно быть число (38), чтобы быть конкретным.Но то, что я нашел странным, это то, что он принимает цифры до 38 цифр.1.111E + 125.Если точность Datatype равна 38, а масштаб может варьироваться от -84 до 127, как это значение может быть вставлено в столбец.

A: и мы сказали ... 1.111e + 125 имеет только 4 цифры точности (числоцифр, необходимых для представления числа - в данном случае 1111).

Что, по-видимому, означает, что показатель степени рассматривается отдельно от точности и масштаба.Но несколько сообщений, которые кто-то еще спрашивает:

Q: Когда я создаю таблицу наподобие: создайте тест таблицы (без номера (7));вставить в тестовые значения (1.00e + 25);выдает следующее сообщение об ошибке: ORA-01438: значение, превышающее указанную точность, допускает этот столбец.Можете ли вы, пожалуйста.объясни это.

A: вы сказали 7 цифр, вы дали ему 25

, что, по-видимому, указывает на то, что показатель степени ограничен точностью.Надеясь, что кто-то может помочь мне понять, как оба ответа могут быть правильными.

1 Ответ

3 голосов
/ 26 августа 2011

number(7) - это целое число (не более) из семи цифр (в «нормальном» десятичном представлении).Обратите внимание, что дроби не допускаются.Номера больше 9,999,999 не принимаются.Это не имеет никакого отношения к тому, сколько значащих цифр у них есть.Это «деловое ограничение», введенное вами.

number(7,2) будет числом с семью цифрами, включая две после десятичной точки

number - число с плавающей запятойс 38 цифрами точности (т.е. 38 значащих цифр, независимо от того, где они находятся по отношению к десятичной запятой).Показатель степени может быть любым между -84 и 125. Здесь нет никаких "деловых ограничений".Вы можете хранить столько же, сколько Oracle может хранить (это 38 цифр и показатель степени от -84 до 125).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...