web-dev-qa-db-fra.com

Comment interpréter la précision et l'échelle d'un nombre dans une base de données?

J'ai la colonne suivante spécifiée dans une base de données: décimal (5,2)

Comment interprète-t-on cela?

Selon les propriétés de la colonne telles qu'elles sont affichées dans SQL Server Management Studio, je peux voir que cela signifie: décimal (précision numérique, échelle numérique).

Que signifient précision et échelle en termes réels?

Il serait facile de l’interpréter comme une décimale à 5 chiffres et à deux décimales ... c’est-à-dire 12345.12.

P.S. J'ai été en mesure de déterminer la réponse correcte d'un collègue mais j'ai eu beaucoup de difficulté à trouver une réponse en ligne. En tant que tel, j'aimerais que la question et la réponse soient documentées ici sur stackoverflow pour référence future.

216
mezoid

La précision numérique fait référence au nombre maximal de chiffres présents dans le nombre.

soit 1234567.89 a une précision de 9

L'échelle numérique correspond au nombre maximal de décimales

soit 123456.789 a une échelle de 3

Ainsi, la valeur maximale autorisée pour le nombre décimal (5,2) est de 999,99.

357
mezoid

La précision d'un nombre est le nombre de chiffres.

L'échelle d'un nombre est le nombre de chiffres après la virgule décimale.

Ce qui est généralement impliqué lors de la définition de la précision et de l’échelle lors de la définition d’un champ, c’est qu’ils représentent des valeurs maximum.

Par exemple, un champ décimal défini avec precision=5 et scale=2 autoriserait les valeurs suivantes:

  • 123.45 (p = 5, s = 2)
  • 12.34 (p = 4, s = 2)
  • 12345 (p = 5, s = 0)
  • 123.4 (p = 4, s = 1)
  • 0 (p = 0, s = 0)

Les valeurs suivantes ne sont pas autorisées ou pourraient causer une perte de données:

  • 12.345 (p = 5, s = 3) => pourrait être tronqué en 12.35 (p = 4, s = 2)
  • 1234.56 (p = 6, s = 2) => pourrait être tronqué en 1234.6 (p = 5, s = 1)
  • 123.456 (p = 6, s = 3) => pourrait être tronqué en 123.46 (p = 5, s = 2)
  • 123450 (p = 6, s = 0) => hors limites

Notez que la plage est généralement définie par la précision: |value| < 10^p ...

78
boumbh

Précision, échelle et longueur dans la documentation de SQL Server 2000, on lit:

La précision est le nombre de chiffres dans un nombre. L'échelle est le nombre de chiffres à droite du séparateur décimal d'un nombre. Par exemple, le nombre 123.45 a une précision de 5 et une échelle de 2.

21
Chris