¿Cuál es la diferencia entre precisión y escala?

141

¿Cuál es la diferencia entre precisión y escala en Oracle? En los tutoriales, generalmente dejan la escala vacía y establecen la precisión en 6 al crear una clave primaria.

¿Qué significan precisión y escala?

user700792
fuente

Respuestas:

203

Precisión 4, escala 2: 99,99

Precisión 10, escala 0: 9999999999

Precisión 8, escala 3: 99999.999

Precisión 5, escala -3: 99999000

koljaTM
fuente
15
¿Puedes explicar el comportamiento de las escalas negativas?
Geek
2
parece redondeado / ignora que quedan muchos valores enteros de decimal
JDPeckham
3
tenga en cuenta que la precisión siempre incluye la porción de escala. por ejemplo: Precisión 4, escala 2 - fallará cualquier número> 99.9999 ..; intente: seleccione cast (99.99999 como NUMBER (4,2)) de dual; //OKAY; seleccione elenco (100.9 como NÚMERO (4,2)) de dual; //FALLAR;
Jama Djafarov
@JamaDjafarov 99.99999 falla como se puede ver a continuación: `21:53:54 CB900 @ XYZ> seleccione emitir (99.99999 como NÚMERO (4,2)) de dual; seleccione cast (99.99999 como NUMBER (4,2)) de dual * ERROR en la línea 1: ORA-01438: valor mayor que la precisión especificada permitida para esta columna 21:52:32 CB900 @ ASCEND1> seleccione la versión de v $ instancia; VERSIÓN ------------------------------------------------- - 12.1.0.2.0 `
Phalgun
@Phalgun select cast (99.9999 como NUMBER (4,2)) de DUAL; es un mal ejemplo porque el truncamiento redondeará el número de 99 a 100, que es demasiado grande para un NÚMERO (4,2). Intente seleccionar emitir (88.8888 como NÚMERO (4,2)) de DUAL; en cambio ver la respuesta es 88.89.
superbeck el
58

La precisión es el número de dígitos significativos. Oracle garantiza la portabilidad de los números con una precisión que va del 1 al 38.

La escala es el número de dígitos a la derecha (positivo) o a la izquierda (negativo) del punto decimal. La escala puede variar de -84 a 127.

En su caso, ID con precisión 6 significa que no aceptará un número con 7 o más dígitos significativos.

Referencia:

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

Esa página también tiene algunos ejemplos que le harán comprender la precisión y la escala.

manojlds
fuente
1
eso significa que el último número será 1000000?
user700792
9
+1: Creo que la clave para entender esto es entender el formato interno del número: mantisa y exponente. La precisión establece un límite en la posible longitud de la mantisa, y la escala establece un límite en el mínimo posible de exponente.
David Aldridge
@DavidAldridge te hago eco. Creo que deberías considerar publicarlo como una respuesta con respecto a la mantisa y el exponente. Un número se almacena realmente en un formato de longitud variable.
Lalit Kumar B
55

La precisión es el número total de dígitos, puede estar entre 1 y 38. La
escala es el número de dígitos después del punto decimal, también se puede establecer como negativo para el redondeo.

Ejemplo:
NÚMERO (7,5): 12.12345
NÚMERO (5,0): 12345

Más detalles en el sitio web de ORACLE:
https://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT1832

Ayman
fuente
Y Escala es el número de dígitos a la derecha (positivo) o a la izquierda (negativo) del punto decimal, no solo después del punto decimal.
Lalit Kumar B
Mira el ejemplo de koljaTM. La precisión es cuántos dígitos significativos, que pueden tener un valor (es decir, no solo "0" como marcadores de posición). La escala indica cómo caen con respecto al punto decimal. La escala puede ser negativa, lo que indica qué precisión POR ENCIMA de 0 NO te importa. NÚMERO (1, -4): solo permite 10 valores: 00000, 10000, 20000 ... 90000
gordon el
1
La precisión NO ES SOLO el número total de dígitos. Como David Aldridge explicó en su comentario a manojlds, es la mantisa: cuántos dígitos significativos te importan. La escala considerada como el exponente es una explicación más precisa, aunque esotérica. Cualquier escala negativa no tendrá dígitos después del punto decimal, y tendrá tantos ceros como marcadores de posición a la izquierda del punto decimal. El NÚMERO (1, -4) tendrá 5 dígitos, pero solo el primero, en el lugar de los 10.000, tendrá un valor que le interesa.
Gordon
34

Quizás más claro:

Tenga en cuenta que la precisión es el número total de dígitos, escala incluida

NÚMERO (Precisión, Escala)

Precisión 8, escala 3: 87654.321

Precisión 5, escala 3: 54.321

Precisión 5, escala 1: 5432.1

Precisión 5, escala 0: 54321

Precisión 5, escala -1: 54320

Precisión 5, escala -3: 54000

Eric Bole-Feysot
fuente
19

La escala es el número de dígitos después del punto decimal (o dos puntos según su localidad)

La precisión es el número total de dígitos significativos.

escala VS precisión

ylerjen
fuente
1

precisión: es el número total de dígitos antes o después del punto de raíz. EJ: 123.456 aquí la precisión es 6.

Escala: es el número total de dígitos después del punto de raíz. EJ: 123.456 aquí Scaleis 3

Bablu Gope
fuente
-5

Si el valor es 9999.988 y Precisión 4, escala 2, entonces significa 9999 (representa la precisión) .99 (la escala es 2, entonces .988 se redondea a .99)

Si el valor es 9999.9887 y la precisión es 4, la escala es 2, entonces significa 9999.99

yogui
fuente
77
No, la precisión es el número de dígitos significativos para almacenar. En ambos casos, la precisión almacenada es 6 y la escala es 2.
David Aldridge