Programing

데이터베이스에서 숫자의 정밀도와 스케일을 어떻게 해석합니까?

lottogame 2020. 4. 24. 08:03
반응형

데이터베이스에서 숫자의 정밀도와 스케일을 어떻게 해석합니까?


데이터베이스에 다음 열이 지정되어 있습니다. decimal (5,2)

이것을 어떻게 해석합니까?

SQL Server Management Studio에서 볼 때 열의 속성에 따르면 십진수 (숫자 정밀도, 숫자 스케일)를 의미합니다.

정밀도와 스케일은 실제 용어의 의미는 무엇입니까?

이것을 5 자리와 소수점 이하 두 자리가있는 10 진수로 해석하기가 쉬울 것입니다. 즉 12345.12

추신 : 나는 동료로부터 정답을 결정할 수 있었지만 온라인에서 답을 찾는 데 큰 어려움을 겪었습니다. 따라서 나중에 참조 할 수 있도록 질문과 대답을 여기에 문서화하고 싶습니다.


숫자 정밀도는 숫자에있는 최대 자릿수를 나타냅니다.

1234567.89의 정밀도는 9입니다

숫자 스케일은 최대 소수점 이하 자릿수를 나타냅니다.

즉 123456.789의 척도는 3입니다.

따라서 decimal (5,2)에 허용되는 최대 값은 999.99입니다.


숫자의 정밀도는 자릿수입니다.

숫자의 스케일은 소수점 뒤의 자릿수입니다.

필드 정의에서 정밀도 및 스케일을 설정할 때 일반적으로 암시하는 것은 최대을 나타냅니다 .

예, 진수 필드로 정의 precision=5하고 scale=2다음과 같은 값을 허용합니다 :

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

다음 값은 허용되지 않거나 데이터 손실을 일으킬 수 있습니다.

  • 12.345(p = 5, s = 3) => 12.35(p = 4, s = 2) 로 잘릴 수 있습니다.
  • 1234.56(p = 6, s = 2) => 1234.6(p = 5, s = 1) 로 잘릴 수 있습니다.
  • 123.456(p = 6, s = 3) => 123.46(p = 5, s = 2) 로 잘릴 수 있습니다.
  • 123450 (p = 6, s = 0) => 범위를 벗어남

범위는 일반적으로 정밀도로 정의됩니다. |value| < 10^p...


SQL Server 2000 설명서의 정밀도, 스케일 및 길이 는 다음 같습니다.

정밀도는 숫자의 자릿수입니다. 스케일은 숫자에서 소수점 오른쪽의 자릿수입니다. 예를 들어 숫자 123.45의 정밀도는 5이고 스케일은 2입니다.

참고 : https://stackoverflow.com/questions/2377174/how-do-i-interpret-precision-and-scale-of-a-number-in-a-database

반응형