정밀도와 스케일의 차이점은 무엇입니까?


141

Oracle의 정밀도와 스케일의 차이점은 무엇입니까? 학습서에서는 기본 키를 작성할 때 일반적으로 스케일을 비워두고 정밀도를 6으로 설정합니다.

정밀도와 스케일은 무엇을 의미합니까?

답변:


203

정밀도 4, 스케일 2 : 99.99

정밀도 10, 스케일 0 : 9999999999

정밀도 8, 스케일 3 : 99999.999

정밀도 5, 스케일 -3 : 99999000


15
음수 스케일의 동작을 설명해 주시겠습니까?
Geek

2
소수점 이하로 많은 정수 값이 남은 라운드 / 무시처럼 보입니다.
JDPeckham

3
정밀도에는 항상 스케일 부분이 포함됩니다. 예 : 정밀도 4, 스케일 2-99.9999 ..보다 큰 숫자는 실패합니다.; 시도 : 이중에서 캐스트 (99.99999를 NUMBER (4,2)로)를 선택하십시오. //확인; 이중에서 캐스트 (100.9를 NUMBER (4,2)로)를 선택합니다. //불합격;
Jama Djafarov

@JamaDjafarov 99.99999는 아래와 같이 실패합니다 :`21:53:54 CB900 @ XYZ> 듀얼에서 캐스트 (99.99999를 NUMBER (4,2)로 선택); 라인 1의 이중 * 오류에서 캐스트 (99.99999를 NUMBER (4,2)로 99.99999 선택) : ORA-01438 :이 열에 허용 된 지정된 정밀도보다 큰 값 21:52:32 CB900 @ ASCEND1> v $ instance에서 버전 선택; 버전 ------------------------------------------------- - 12.1.0.2.0`
Phalgun

@Phalgun은 DUAL에서 캐스트 (99.9999를 NUMBER (4,2)로 선택)를 선택합니다. 잘림이 99에서 100으로 반올림되므로 NUMBER (4,2)에 비해 너무 커지기 때문에 잘못된 예입니다. DUAL에서 cast (88.8888을 NUMBER (4,2)로 선택)를 시도하십시오. 대신 응답은 88.89입니다.
superbeck

58

정밀도는 유효 자릿수입니다. 오라클은 1에서 38까지의 정밀도로 숫자의 이식성을 보장합니다.

스케일은 소수점 오른쪽 (양수) 또는 왼쪽 (음수)의 자릿수입니다. 스케일의 범위는 -84에서 127입니다.

귀하의 경우 정밀도가 6 인 ID는 유효 숫자가 7 이상인 숫자를 허용하지 않음을 의미합니다.

참고:

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

이 페이지에는 정밀도와 스케일을 이해하는 몇 가지 예가 있습니다.


1
마지막 범버가 1000000이라는 것을 의미합니까?
user700792

9
+1 : 이것을 이해하는 열쇠는 내부 숫자 형식 인 가수와 지수를 이해하는 것입니다. 정밀도는 가수의 가능한 길이를 제한하고 스케일은 가능한 최소 지수를 제한합니다.
David Aldridge 2016 년

@DavidAldridge 당신을 반향시킵니다. 가수와 지수에 관한 답변으로 게시해야한다고 생각합니다. 숫자는 실제로 가변 길이 형식으로 저장됩니다.
Lalit Kumar B

55

정밀도 는 전체 자릿수이며 1에서 38 사이 일 수 있습니다.
스케일 은 소수점 뒤의 자릿수이며 반올림에 음수로 설정 될 수도 있습니다.

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

ORACLE 웹 사이트에 대한 자세한 내용 :
https://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT1832


그리고 Scale은 소수점 바로 다음이 아니라 소수점 오른쪽 (양수) 또는 왼쪽 (음수)의 자릿수입니다.
Lalit Kumar B

koljaTM의 예를보십시오. 정밀도는 유효 자릿수로, 값을 가질 수 있습니다 (예 : 자리 표시 자로 "0"이 아님). 스케일은 소수점과 관련하여 어떻게 떨어지는 지 나타냅니다. 스케일은 음수 일 수 있으며, 0에서 신경 쓰지 않는 정밀도를 나타냅니다. 번호 (1, -4) ... 00000, 10000, 20000 90000 : 10 값을 허용
고든

1
정밀도는 총 자릿수에 지나지 않습니다. David Aldridge가 manojlds에 대한 자신의 의견에서 설명한 것처럼 가수입니다. 지수로 생각되는 척도는 좀 더 정확하지만 난해한 설명입니다. 음수 스케일은 소수점 뒤에 숫자가 없으며 소수점 왼쪽에 자리 표시 자로 많은 0이 있습니다. NUMBER (1, -4)에는 5 자리 숫자가 있지만 10,000 개 위치에서 첫 번째 숫자 만 관심있는 값을 갖습니다.
고든

34

아마도 더 분명 할 것입니다 :

정밀도는 총 자릿수, 스케일 포함입니다.

NUMBER (정밀도, 규모)

정밀도 8, 스케일 3 : 87654.321

정밀도 5, 스케일 3 : 54.321

정밀도 5, 스케일 1 : 5432.1

정밀도 5, 스케일 0 : 54321

정밀도 5, 스케일 -1 : 54320

정밀도 5, 스케일 -3 : 54000


19

스케일은 소수점 뒤의 자릿수입니다 (또는 로케일에 따라 콜론).

정밀도는 유효 자릿수의 총계입니다.

스케일 VS 정밀도


1

정밀도 : 기수 전후의 총 자릿수입니다. 예 : 123.456 여기서 정밀도는 6입니다.

스케일 : 기수 뒤의 총 자릿수입니다. EX : 123.456 여기에 Scaleis 3


-5

값이 9999.988이고 정밀도 4 인 경우 스케일 2는 9999 (정밀도를 나타냄)를 의미합니다 .99 (스케일은 2이므로 .988은 .99로 반올림 됨)

값이 9999.9887이고 정밀도가 4 인 경우 스케일은 2이고 9999.99를 의미합니다.


7
아니요, 정밀도는 저장할 유효 자릿수입니다. 두 경우 모두 저장된 정밀도는 6이고 스케일은 2입니다.
David Aldridge
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.