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


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.