Quelle est la différence entre précision et échelle?


141

Quelle est la différence entre précision et échelle dans Oracle? Dans les didacticiels, ils laissent généralement l'échelle vide et définissent la précision sur 6 lors de la création d'une clé primaire.

Que signifient la précision et l'échelle?

Réponses:


203

Précision 4, échelle 2: 99,99

Précision 10, échelle 0: 9999999999

Précision 8, échelle 3: 99999,999

Précision 5, échelle -3: 99999000


15
pouvez-vous expliquer le comportement des échelles négatives?
Geek

2
ressemble à des arrondis / ignore que de nombreuses valeurs entières à gauche de la décimale
JDPeckham

3
gardez à l'esprit que la précision inclut toujours la partie de l'échelle. par exemple: Précision 4, échelle 2 - échouera tout nombre> 99,9999 ..; essayez: sélectionnez cast (99,99999 comme NUMÉRO (4,2)) à partir du double; //D'ACCORD; sélectionnez cast (100,9 comme NUMBER (4,2)) à partir du double; //ÉCHOUER;
Jama Djafarov

@JamaDjafarov 99.99999 échoue comme on peut le voir ci-dessous: `21:53:54 CB900 @ XYZ> sélectionnez la distribution (99,99999 comme NUMÉRO (4,2)) à partir du double; sélectionnez cast (99,99999 comme NUMBER (4,2)) à partir du double * ERREUR à la ligne 1: ORA-01438: valeur supérieure à la précision spécifiée autorisée pour cette colonne 21:52:32 CB900 @ ASCEND1> sélectionnez la version à partir de v $ instance; VERSION ------------------------------------------------- - 12.1.0.2.0 `
Phalgun

@Phalgun sélectionne la distribution (99,9999 comme NUMÉRO (4,2)) de DUAL; est un mauvais exemple car la troncature arrondira le nombre de 99 à 100, ce qui est alors trop grand pour un NOMBRE (4,2). Essayez de sélectionner une distribution (88.8888 comme NUMBER (4,2)) de DUAL; au lieu de voir la réponse est 88,89.
superbeck

58

La précision est le nombre de chiffres significatifs. Oracle garantit la portabilité des numéros avec une précision allant de 1 à 38.

L'échelle est le nombre de chiffres à droite (positif) ou à gauche (négatif) du point décimal. L'échelle peut aller de -84 à 127.

Dans votre cas, un identifiant avec une précision de 6 signifie qu'il n'acceptera pas un nombre avec 7 chiffres ou plus significatifs.

Référence:

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

Cette page contient également quelques exemples qui vous permettront de comprendre la précision et l'échelle.


1
cela signifie que le dernier bumber sera 1000000?
user700792

9
+1: Je pense que la clé pour comprendre cela est de comprendre le format des nombres internes - mantisse et exposant. La précision place une limite sur la longueur possible de la mantisse et l'échelle place une limite sur le minimum possible d'exposant.
David Aldridge

@DavidAldridge je vous fais écho. Je pense que vous devriez envisager de l'afficher comme une réponse concernant la mantisse et l'exposant. Un nombre est en fait stocké dans un format de longueur variable.
Lalit Kumar B

55

La précision est le nombre total de chiffres, peut être compris entre 1 et 38. L'
échelle est le nombre de chiffres après la virgule décimale, peut également être définie comme négative pour l'arrondissement.

Exemple:
NUMBER (7,5): 12.12345
NUMBER (5,0): 12345

Plus de détails sur le site ORACLE:
https://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT1832


Et l'échelle est le nombre de chiffres à droite (positif) ou à gauche (négatif) du point décimal, pas seulement après le point décimal.
Lalit Kumar B

Regardez l'exemple de koljaTM. La précision est le nombre de chiffres significatifs qui peuvent avoir une valeur (c'est-à-dire pas seulement "0" comme espaces réservés). L'échelle indique comment ceux-ci tombent par rapport au point décimal. L'échelle peut être négative, indiquant la précision AU-DESSUS de 0 qui ne vous intéresse PAS. NUMBER (1, -4): autorise seulement 10 valeurs: 00000, 10000, 20000 ... 90000
gordon

1
La précision n'est PAS SEULEMENT le nombre total de chiffres. Comme David Aldridge l'a expliqué dans son commentaire aux hommes, c'est la mantisse - combien de chiffres significatifs vous importent. L'échelle considérée comme l'exposant est une explication plus précise, quoique ésotérique. Toute échelle négative n'aura pas de chiffres après la virgule décimale, et aura autant de 0 comme espaces réservés à gauche de la virgule décimale. NUMBER (1, -4) aura 5 chiffres, mais seul le premier, à la place des 10 000, aura une valeur qui vous tient à cœur.
gordon

34

Peut-être plus clair:

Notez que la précision est le nombre total de chiffres, échelle incluse

NOMBRE (précision, échelle)

Précision 8, échelle 3: 87654.321

Précision 5, échelle 3: 54,321

Précision 5, échelle 1: 5432,1

Précision 5, échelle 0: 54321

Précision 5, échelle -1: 54320

Précision 5, échelle -3: 54000


19

L'échelle est le nombre de chiffres après la virgule décimale (ou deux-points selon vos paramètres régionaux)

La précision est le nombre total de chiffres significatifs

échelle VS précision


1

précision: c'est le nombre total de chiffres avant ou après le point de base. EX: 123,456 ici la précision est de 6.

Echelle: C'est le nombre total de chiffres après le point de base. EX: 123.456 ici Scaleis 3


-5

Si la valeur est 9999,988 et la précision 4, l'échelle 2, cela signifie 9999 (cela représente la précision) .99 (l'échelle est 2 donc 0,988 est arrondi à 0,99)

Si la valeur est 9999,9887 et la précision est 4, l'échelle est 2, cela signifie 9999,99


7
Non, la précision est le nombre de chiffres significatifs à stocker. Dans vos deux cas, la précision stockée est de 6 et l'échelle est de 2.
David Aldridge
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.