답변

10

그것은 the manual에 있어요 :

PostgreSQL은 또한 SQL 표준 표기가 부정확 한 수치 형을 지정하기위한 을의 float와 float (p)를 지원합니다. 여기에서 p는 최소 의 허용 가능한 정밀도를 2 진수로 지정합니다. PostgreSQL은 float (1) ~ float (24)를 실수 형으로 선택하고 float (25)는 float (53) 배정 밀도를 선택합니다. 허용 된 범위를 벗어나는 p 값은 오류를 표시합니다. 정밀도가 지정되지 않은 부동 소수점은 의 정밀도를 의미합니다.

그러나 여기서 중요한 점은 최소의 허용 가능한 정밀도를 지정한다는 것입니다. PostgreSQL은 이것을 사용하여 요구 사항을 충족하는 기본 데이터 유형 (float4 또는 float8)을 선택합니다.

regress=> \x 
Expanded display is on. 
regress=> SELECT 
     '1.123456789123456789'::float, 
     '1.123456789123456789'::double precision, 
     '1.123456789123456789'::float(1), 
     '1.123456789123456789'::float(2), 
     '1.123456789123456789'::float(24),                                  
     '1.123456789123456789'::float(48);                                  
-[ RECORD 1 ]------------                                      
float8 | 1.12345678912346 
float8 | 1.12345678912346 
float4 | 1.12346 
float4 | 1.12346 
float4 | 1.12346 
float8 | 1.12345678912346 

유형 선택을 확인하려면 pg_typeof을 사용할 수 있습니다.

실제로는 표준 구문을 지원하기 위해 존재하며 적절한 유형의 선택을 통해 PostgreSQL의 방언으로 변환됩니다.

+1

즉, float (1 ~ 24)는 PostgreSQL에서와 동일한 의미입니다. 그래서 float (25 ~ 53)입니다. 나 맞아? – Xin

+0

@DenLi 네, 맞습니다. 그들은 적절하게'float4' 또는'float8'로 변환됩니다. –

+0

답변과 예제를 보내 주셔서 감사합니다. 그것이 바로 제가 요구 한 것입니다. – Xin