Jak interpretować precyzję i skalę liczby w bazie danych?

Mam następującą kolumnę określoną w bazie danych: decimal(5,2)

Jak to interpretować?

Zgodnie z właściwościami na kolumnie widocznymi w SQL Server Management studio widzę, że oznacza ona: decimal (precyzja numeryczna, Skala numeryczna).

Co oznaczają precyzja i skala w ujęciu realnym?

Łatwo byłoby to zinterpretować jako dziesiętny z 5 cyframi i dwoma dziesiętnymi places...ie 12345.12

P. S. udało mi się określ poprawną odpowiedź od kolegi, ale miał duże trudności ze znalezieniem odpowiedzi online. W związku z tym chciałbym, aby pytanie i odpowiedź zostały udokumentowane tutaj na stackoverflow w przyszłości.

Author: fredt, 2010-03-04

3 answers

Precyzja numeryczna odnosi się do maksymalnej liczby cyfr, które są obecne w liczbie.

Ie 1234567.89 ma precyzję 9

Skala liczbowa odnosi się do maksymalnej liczby miejsc dziesiętnych

Ie 123456.789 ma skalę 3

Zatem maksymalna dozwolona wartość dziesiętna(5,2) wynosi 999,99

 424
Author: mezoid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-27 16:03:19

Precyzja liczby to liczba cyfr.

Skala liczby to liczba cyfr po przecinku.

Przy ustawianiu precyzji i skali na definicji pola zakłada się, że reprezentują one maksymalne wartości.

Przykład, pole dziesiętne zdefiniowane przez precision=5 i scale=2 pozwoli na następujące wartości:

  • 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)

Następujące wartości nie są dozwolone lub spowodowałyby utratę danych:

  • 12.345 (p = 5, s=3) = > można skrócić do 12.35 (P = 4, s=2)
  • 1234.56 (p = 6, s=2) = > można skrócić do 1234.6 (P = 5, s=1)
  • 123.456 (P = 6, s=3) = > można skrócić do 123.46 (P = 5, s=2)
  • 123450 (P = 6, s=0) = > poza zakresem

Należy zauważyć, że zakres jest ogólnie określony przez precyzję: |value| < 10^p...

 96
Author: boumbh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-20 10:14:32

Dokładność, Skala i długość w dokumentacji SQL Server 2000 brzmi:

Precyzja jest liczbą cyfr w liczbie. Skala to liczba cyfr po prawej stronie punktu dziesiętnego w liczbie. Na przykład liczba 123.45 ma dokładność 5 i skalę 2.

 31
Author: Chris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-16 18:56:08