В чем разница между точностью и масштабом?

144

В чем разница между точностью и масштабом в Oracle? В учебниках обычно оставляют масштаб пустым и устанавливают точность 6 при создании первичного ключа.

Что означают точность и масштаб?

user700792
источник

Ответы:

206

Точность 4, масштаб 2: 99,99

Точность 10, масштаб 0: 9999999999

Точность 8, масштаб 3: 99999.999

Точность 5, масштаб -3: 99999000

koljaTM
источник
15
не могли бы вы объяснить поведение отрицательных шкал?
Geek
2
похоже, что многие целые числа слева от десятичной дроби
округляются
3
имейте в виду, что точность всегда включает часть шкалы. например: Precision 4, scale 2 - выйдет из строя любое число> 99,9999 ..; попробуйте: выберите cast (99.99999 как NUMBER (4,2)) из двойного; //ОК; выберите каст (100.9 как ЧИСЛО (4,2)) из двойного; //ПОТЕРПЕТЬ ПОРАЖЕНИЕ;
Джама Джафаров
@JamaDjafarov 99.99999 не работает, как показано ниже: `21:53:54 CB900 @ XYZ> выберите cast (99.99999 as NUMBER (4,2)) из двойного; выберите приведение (99.99999 как ЧИСЛО (4,2)) из двойного * ОШИБКА в строке 1: ORA-01438: значение больше указанной точности, разрешенной для этого столбца 21:52:32 CB900 @ ASCEND1> выберите версию из экземпляра v $; ВЕРСИЯ ------------------------------------------------- - 12.1.0.2.0 `
Phalgun
@Phalgun выберите cast (99.9999 как ЧИСЛО (4,2)) из DUAL; - плохой пример, потому что при усечении число округляется от 99 до 100, что в таком случае слишком велико для ЧИСЛА (4,2). Попробуйте выбрать приведение (88,8888 как ЧИСЛО (4,2)) из DUAL; вместо этого, чтобы увидеть ответ 88,89.
superbeck
58

Точность - это количество значащих цифр. Oracle гарантирует переносимость чисел с точностью от 1 до 38.

Масштаб - это количество цифр справа (положительное) или слева (отрицательное) от десятичной точки. Шкала может находиться в диапазоне от -84 до 127.

В вашем случае идентификатор с точностью 6 означает, что он не принимает числа с 7 или более значащими цифрами.

Справка:

http://download.oracle.com/docs/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT1832

На этой странице также есть несколько примеров, которые помогут вам понять точность и масштаб.

Manojlds
источник
1
что значит последний бамбер будет 1000000?
user700792
9
+1: Я думаю, что ключом к пониманию этого является понимание внутреннего формата чисел - мантиссы и экспоненты. Точность устанавливает ограничение на возможную длину мантиссы, а шкала устанавливает предел на возможный минимум экспоненты.
Дэвид Олдридж
@DavidAldridge Я повторяю тебе. Я думаю, вам стоит подумать о том, чтобы опубликовать его как ответ относительно мантиссы и экспоненты. Число фактически хранится в формате переменной длины.
Lalit Kumar B
57

Точность - это общее количество цифр, может быть от 1 до 38.
Масштаб - это количество цифр после десятичной точки, также может быть отрицательным для округления.

Пример:
НОМЕР (7,5): 12.12345
НОМЕР (5,0): 12345

Подробнее на сайте ORACLE:
https://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT1832

Айман
источник
Масштаб - это количество цифр справа (положительное) или слева (отрицательное) от десятичной точки, а не сразу после десятичной точки.
Lalit Kumar B
Взгляните на пример КолиTM. Точность - это количество значащих цифр, которые могут иметь значение (т. Е. Не только «0» в качестве заполнителей). Масштаб показывает, как они падают относительно десятичной точки. Масштаб может быть отрицательным, указывая, какая точность ВЫШЕ 0 вас НЕ заботит. ЧИСЛО (1, -4): допускает только 10 значений: 00000, 10000, 20000 ... 90000
gordon
1
Точность - это НЕ ТОЛЬКО общее количество цифр. Как объяснил Дэвид Олдридж в своем комментарии к manojlds, это мантисса - сколько значащих цифр вам нужно. Масштаб, рассматриваемый как показатель степени, является более точным, хотя и эзотерическим объяснением. Любая отрицательная шкала не будет иметь цифр после десятичной точки и будет содержать столько нулей в качестве заполнителей слева от десятичной точки. NUMBER (1, -4) будет состоять из 5 цифр, но только первая из 10 000 будет иметь значение, которое вам нужно.
Гордон
34

Может быть, более ясно:

Обратите внимание, что точность - это общее количество цифр, включая масштаб.

ЧИСЛО (точность, масштаб)

Точность 8, масштаб 3: 87654,321

Точность 5, масштаб 3: 54,321

Точность 5, масштаб 1: 54 32,1

Точность 5, масштаб 0: 54321

Точность 5, масштаб -1: 54320

Точность 5, масштаб -3: 54000

Эрик Боле-Фейсот
источник
20

Масштаб - это количество цифр после десятичной точки (или двоеточия в зависимости от вашего региона)

Точность - это общее количество значащих цифр.

масштаб VS точность

Ylerjen
источник
1

точность: это общее количество цифр до или после точки счисления. Пример: 123,456 здесь точность 6.

Масштаб: это общее количество цифр после точки счисления. Пример: 123.456 здесь Scaleis 3

Баблу Гопе
источник
-5

Если значение 9999,988 и точность 4, масштаб 2, то это означает 9999 (представляет точность) .99 (масштаб равен 2, поэтому 0,988 округляется до 0,99)

Если значение 9999,9887 и точность 4, масштаб равен 2, то это означает 9999,99.

йог
источник
7
Нет, точность - это количество хранимых значащих цифр. В обоих случаях сохраненная точность - 6, а масштаб - 2.
Дэвид Олдридж