PostgreSQL에서 float(p)
의 정밀도 매개 변수 p를 이해하는 데 어려움을 겪고 있습니다. 예를 들어, float(1)
과 float(24)
은 나와 똑같은 것 같습니다.PostgreSQL : float (1)과 float (24)의 차이점은 무엇입니까?
누구나 저에게 차이점에 대한 몇 가지 예를 제공 할 수 있습니까?
PostgreSQL에서 float(p)
의 정밀도 매개 변수 p를 이해하는 데 어려움을 겪고 있습니다. 예를 들어, float(1)
과 float(24)
은 나와 똑같은 것 같습니다.PostgreSQL : float (1)과 float (24)의 차이점은 무엇입니까?
누구나 저에게 차이점에 대한 몇 가지 예를 제공 할 수 있습니까?
그것은 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의 방언으로 변환됩니다.
즉, float (1 ~ 24)는 PostgreSQL에서와 동일한 의미입니다. 그래서 float (25 ~ 53)입니다. 나 맞아? – Xin
@DenLi 네, 맞습니다. 그들은 적절하게'float4' 또는'float8'로 변환됩니다. –
답변과 예제를 보내 주셔서 감사합니다. 그것이 바로 제가 요구 한 것입니다. – Xin