Состояния документации: "Точность может колебаться от 1 до 38. Масштаб может колебаться от-84 до 127".
Как масштаб может быть больше, чем точность? Не был должен Диапазон шкалы от-38 до 38?
Может возникнуть вопрос, почему бы и нет? Попробуйте следующий SQL.
select cast(0.0001 as number(2,5)) num,
to_char(cast(0.0001 as number(2,5))) cnum,
dump(cast(0.0001 as number(2,5))) dmp
from dual
То, что вы видите, это то, что вы можете хранить небольшие числа, это такая структура Возможно, это не требуется очень часто, но я уверен, что где-то есть кто-то, кто хранит очень точные, но очень маленькие числа.
Хм, насколько я понимаю, точность - это количество цифр.
максимальная точность 126 двоичных цифр, что примерно эквивалентно 38 десятичным цифрам.
В oracle у вас есть тип ЧИСЛО (точность, масштаб), где точность - это общее количество цифр, а масштаб - это количество цифр справа от десятичной точки. Масштаб можно не указывать, но он означает ноль. Точность может быть не указана (используйте, например, ЧИСЛО (*, 10)) - это означает, что общее количество цифр такое, какое необходимо, но справа 10 цифр
Если масштаб меньше нуля, значение будет округлено до масштаб
цифр слева от десятичной точки.
Я думаю, что если вы зарезервируете больше чисел справа от десятичной точки, чем может быть во всем числе, это будет примерно 0,00000000123456, но я не уверен на 100%.
Спасибо всем за ответы. Похоже, что точность - это количество значащих цифр.
select cast(0.000123 as number(2,5)) from dual
дает результат:
.00012
Где
select cast(0.00123 as number(2,5)) from dual
и
select cast(0.000999 as number(2,5)) from dual
оба дают результат:
ORA-01438: value larger than specified precision allowed for this column
второй из-за округления.