Qual è la differenza tra precisione e scala?


141

Qual è la differenza tra precisione e scala in Oracle? Nei tutorial di solito lasciano vuota la scala e impostano la precisione su 6 durante la creazione di una chiave primaria.

Cosa significano precisione e scala?

Risposte:


203

Precisione 4, scala 2: 99,99

Precisione 10, scala 0: 9999999999

Precisione 8, scala 3: 99999.999

Precisione 5, scala -3: 99999000


15
puoi per favore spiegare il comportamento delle scale negative?
Geek,

2
sembra arrotondare / ignora il fatto che molti valori interi restano decimali
JDPeckham,

3
tieni presente che la precisione include sempre la porzione di scala. ad es .: precisione 4, scala 2 - fallirà qualsiasi numero> 99.9999 ..; prova: seleziona cast (99.99999 come NUMBER (4,2)) da doppio; //OK; seleziona cast (100.9 come NUMBER (4,2)) da doppio; //FALLIRE;
Jama Djafarov

@JamaDjafarov 99.99999 fallisce come si può vedere di seguito: `21:53:54 CB900 @ XYZ> seleziona cast (99.99999 come NUMERO (4,2)) dal doppio; seleziona cast (99.99999 come NUMERO (4,2)) dal doppio * ERRORE alla riga 1: ORA-01438: valore maggiore della precisione specificata consentita per questa colonna 21:52:32 CB900 @ ASCEND1> seleziona versione dall'istanza v $; VERSIONE ------------------------------------------------- - 12.1.0.2.0 `
Phalgun,

@Phalgun seleziona cast (99.9999 come NUMBER (4,2)) da DUAL; è un cattivo esempio perché il troncamento arrotonderà il numero da 99 a 100, che è quindi troppo grande per un NUMERO (4,2). Prova a selezionare cast (88.8888 come NUMBER (4,2)) da DUAL; invece per vedere la risposta è 88.89.
superbeck

58

La precisione è il numero di cifre significative. Oracle garantisce la portabilità dei numeri con precisione compresa tra 1 e 38.

Scala è il numero di cifre a destra (positivo) o a sinistra (negativo) del punto decimale. La scala può variare da -84 a 127.

Nel tuo caso, ID con precisione 6 significa che non accetterà un numero con 7 o cifre più significative.

Riferimento:

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

Quella pagina contiene anche alcuni esempi che ti faranno comprendere precisione e scala.


1
ciò significa che l'ultimo numero sarà 1000000?
user700792

9
+1: Penso che la chiave per comprenderlo sia capire il formato numerico interno: mantissa ed esponente. La precisione pone un limite alla possibile lunghezza della mantissa e la scala pone un limite al possibile minimo di esponente.
David Aldridge,

@DavidAldridge Ti faccio eco. Penso che dovresti considerare di pubblicarlo come una risposta per quanto riguarda la mantissa e l'esponente. Un numero è effettivamente memorizzato in un formato di lunghezza variabile.
Lalit Kumar B,

55

La precisione è il numero totale di cifre, può essere compreso tra 1 e 38.
Scala è il numero di cifre dopo il punto decimale, può anche essere impostato come negativo per l'arrotondamento.

Esempio:
NUMERO (7,5): 12.12345
NUMERO (5,0): 12345

Maggiori dettagli sul sito web ORACLE:
https://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT1832


E Scala è il numero di cifre a destra (positivo) o a sinistra (negativo) del punto decimale, non solo dopo il punto decimale.
Lalit Kumar B,

Guarda l'esempio di koljaTM. La precisione è quante cifre significative, che possono avere un valore (cioè non solo "0" come segnaposti). La scala indica come cadono rispetto al punto decimale. La scala può essere negativa, indicando quale precisione SUPERIORE A 0 NON TI interessa. NUMERO (1, -4): consente solo 10 valori: 00000, 10000, 20000 ... 90000
gordon

1
La precisione NON è SOLO il numero totale di cifre. Come David Aldridge ha spiegato nel suo commento a Manojlds è la mantissa: quante cifre significative ti interessano. La scala pensata come esponente è una spiegazione più accurata, sebbene esoterica. Qualsiasi scala negativa non avrà cifre dopo il punto decimale e avrà tanti 0 come segnaposto a sinistra del punto decimale. NUMBER (1, -4) avrà 5 cifre, ma solo la prima, nella posizione 10.000, avrà un valore a cui tieni.
Gordon,

34

Forse più chiaro:

Si noti che la precisione è il numero totale di cifre, scala inclusa

NUMERO (Precision, Scale)

Precisione 8, scala 3: 87654.321

Precisione 5, scala 3: 54.321

Precisione 5, scala 1: 5432.1

Precisione 5, scala 0: 54321

Precisione 5, scala -1: 54320

Precisione 5, scala -3: 54000


19

Scala è il numero di cifre dopo il punto decimale (o due punti a seconda della locale)

La precisione è il numero totale di cifre significative

scala VS precisione


1

precisione: è il numero totale di cifre prima o dopo il punto di radice. ES: 123.456 qui la precisione è 6.

Scala: è il numero totale di cifre dopo il punto di radice. ES: 123.456 qui Scaleis 3


-5

Se il valore è 9999.988 e Precisione 4, scala 2, significa 9999 (rappresenta la precisione) .99 (la scala è 2, quindi .988 è arrotondato a .99)

Se il valore è 9999.9887 e la precisione è 4, la scala è 2, significa 9999.99


7
No, la precisione è il numero di cifre significative da memorizzare. In entrambi i casi la precisione memorizzata è 6 e la scala è 2.
David Aldridge l'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.