8.1.3. 유형 소수점 부동

8.1.3. 유형 소수점 부동
8.1.3. 플로트 식
데이터 유형의 실제 이중 정밀도 , 부정확 한 가변 정밀도 숫자 유형입니다. 에서  실제로, 이러한 유형의 이진 부동 소수점에 대한 IEEE 표준 754의 구현 보통 산술 (단일 및 이중 정밀도, 각각은) 정도 즉 기본 프로세서로,  운영 체제 및 컴파일러 지원 그것.
실제 더블 데이터 형식이 정확하지, 정밀 번호 변수 유형입니다. 실제로, 이러한 유형은 일반적으로 한 기본 프로세서, 운영체제, 컴파일러로 지원하기 위해, 진 부동 소수점 연산 754 (각각 단일 및 이중 정밀도)를위한 IEEE 표준을 구현됩니다.
 
일부 값이 내부 형식으로 변환 할 수없는 및 저장되는 부정확 한 수단  때문에 값을 저장하고 검색하는 것은 약간의 차이를 보여 수도, 근사치. 이러한 관리  오류를 그들이 어떻게 계산을 통해 전파하는 것은 수학의 전체 지점의 대상이되는  컴퓨터 과학 및 다음 사항을 제외하고, 여기에서 논의되지 않습니다 :
부정확 수단은 어떤 값이 정확하게 내부 포맷으로 변환 할 수 있으므로 약간의 차이가있을 수 검색된 저장된 값의 값을 약 저장하고있다. 이러한 오류와 계산에 전송 그들의 모드의 관리는 다음 사항을 논의하기 위해 여기 만, 수학 및 컴퓨터 과학의 전체 지점의 주제이다 :
 
당신이 정확한 저장 및 (금전 금액 등) 계산이 필요한 경우 •의 사용 숫자  대신 유형입니다.
당신이 정확한 저장과 계산이 필요한 경우 (자본 계정 예를 들어,) • 다음 숫자 데이터 형식을 사용합니다.
당신이 특히 어떤 중요한 이러한 유형의 복잡한 계산을 수행 할 경우 •  당신은 경계 경우에 특정 행동 (무한대, 언더 플로우)에 의존, 당신은 구현을 평가해야합니다  신중하게.
당신이 경계 (무한대, 언더 플로우) 특정 행동의 상황에 특히 의존 뭔가 중요한 복잡한 계산의이 유형을 사용해야하는 경우 •, 다음은 신중하게 고려하는 것이 좋습니다.
예상대로 • 평등을위한 두 개의 부동 소수점 값을 비교하는 것은 항상 작동하지 않을 수 있습니다.
두 개의 부동 소수점 비교 동등 • 결과는 항상 예상하지 않을 수 있습니다.
 
대부분의 플랫폼에서 실제 유형은 최소한의 정밀도를 가진 적어도 1E-37 1E + 37의 범위가  6 진수를. 배정도 유형은 일반적으로 주위의 1E-1E 307 + 308까지의 범위 갖고  적어도 15 자릿수의 정밀도를. 너무 크거나 너무 작은 값은 에러의 원인이됩니다. 반올림은  입력 수의 정밀도가 너무 높은 경우 일어날 수 있습니다. 이다 너무 가까이 제로에 숫자  0에서 별개로 표현할 수없는이 언더 플로우 오류가 발생합니다.
대부분의 플랫폼에서, 범위의 실제 데이터 유형은 적어도입니다 1E-37 1E + 37, 적어도 6 소수점의 정밀도. 더블 데이터 유형은 범위에서 통상 1E-1E + 307 308 15 소수점의 정확도. 삽입 너무 크거나 작은 값이 주어지고. 당신은 높은 정밀도의 번호를 입력하면, 그것은 둥근 수 있습니다. 그리고 너무 가까이 제로와 숫자 0에서 다른로 표현 될 수없는 언더 플로우 오류가 발생합니다.
 
 
노트
주의
컨트롤을 추가 유효 숫자의 수를 설정 extra_float_digits 포함  부동 소수점 값을 출력 텍스트로 변환됩니다. 디폴트 값으로 0 , 출력 PostgreSQL을 지원 플랫폼마다 동일하다. 이 늘리면  더 정확하게 저장된 값을 나타내는 출력을 생성하지만, 인자를 취하지 수있다.
extra_float_digits 파라미터 제어 양은 유효한 디지털 텍스트가 포함되어있는 출력에 추가 부동 소수점 값으로 변환된다. 기본값은 PostgreSQL을 지원하는 각 플랫폼에 출력이 동일하고, 0이다. 더 정확하게 생성 출력값 저장소를 나타내는 것을 증가 시키지만 휴대 성이 저하된다.
 
보통 숫자 값뿐만 아니라, 부동 소수점 유형은 몇 가지 특별한 값이 :
공통의 가치뿐만 아니라, 또한 부동 소수점 값의 몇 가지 특별한 유형이 있습니다 :
 
무한대
-무한대
NaN의
 
이들은 각각 IEEE 754 특수한 값 "무한대", "부의 무한대"및 "숫자가 아닌 값"을 나타냅니다.  (누구의 부동 소수점 연산 IEEE 754를 따르지 않는 시스템에서,이 값은  아마 작업이 예상되므로.) SQL 명령에 상수로이 값을 쓸 때, 당신은 예를 들어, 그들 주위에 따옴표를 삽입해야합니다 UPDATE 테이블 SET X = '-Infinity' . 일  입력, 이러한 문자열은 대소 문자 구별하게 인식된다.
이는 IEEE745 표준, 즉 "무한대"에 맞춰 특수 값, "부의 무한대"이며 "숫자가 아닌." (예상대로 IEEE745 표준 기계와 비 준수에서,이 값이 작동하지 않을 수 있습니다.) 상수의 값이, 예를 들어, SQL의 명령으로 작성된 것입니다 따옴표로 묶어야합니다 때 X = 'UPDATE 테이블 SET를 - 인피니티 '. 입력은,이 값은 대소 문자를 구별하지 않는다.
 
노트
주의
IEEE754 것을 지정 NaN의 다른 부동 소수점 값과 동일하지 비교한다  (포함 NaN이 ). 허용하기 위해 부동 소수점 값을 소트하고 treebased에 사용될  인덱스 PostgreSQL을 취급 하는 NaN 값 동일한로서, 모든 비 - 초과 의 NaN  값.
IEEE745 NaN이 규정은 (자신의 NaN를 포함) 기타 부동 소수점과 동일하지 않아야합니다. 그러나 트리 인덱스를 정렬 할 수 있습니다 부동 소수점 숫자의 사용을 허용하기 위해, 자신의 세트 PostgreSQL은 모든 비 NaN의 값이 큰, NaN이 같음.
 
PostgreSQL는 또한 SQL 표준 표기법이 지원하는 플로트 플로트 ( P ) 부정확 지정  숫자 형식. 여기서, P는 에서의 최소 허용 정밀도 지정 이진 숫자. PostgreSQL는 허용  플로트 (1) 플로트 (24) 선택 용으로서 실제 동안 유형 플로트 (25)는 하기 (53)을 떠  선택 배정 밀도 . (P)의 외측에는 오차 범위를 그릴 수 있었다. 아니오  평균로 이동합니다 지정의 정밀도 를 배정 밀도 .
PostgreSQL는 디지털 부정확 한 유형을 지정 SQL을 표준 부동 소수점 및 부동 소수점 (P)를 지원합니다. 여기서, P는 최소 허용 지정된 정밀도 이진수. PostgreSQL은 더블과 플로트 (53)에 실제 선택으로 플로트 (24)에 플로트 (1) 및 플로트 (25)를 받아들입니다. 허용 오차 범위 밖에 P 값이 발생한다. 지정되지 않은 정밀도 부동 소수점 유형은 더블 나타냅니다.
 
노트
주의
있다는 가정 실제 배정 밀도가 정확히 24 및 53 비트가  가수는 각각 IEEE 표준 부동 소수점 구현을위한 올바른 것입니다.  비 IEEE의 플랫폼이 약간 떨어져있을 수도 있지만, 단순화를 위해 동일한 범위  p는 모든 플랫폼에서 사용된다.
실제 가정 및 부동 소수점 것이 올바른지에 대한 IEEE 표준의 실시 예에서, 각각 24 비트 및 53 비트 가수를 두배. 비 IEEE 플랫폼에서, 그것은 다소 상이 할 수 있지만, 단순화를 위해, 모든 플랫폼 (P)의 값이 동일한 범위를 사용.
 
게시 된 341 개 원래 기사 · 원의 찬양 (54) · 전망 880 000 +

추천

출처blog.csdn.net/ghostliming/article/details/104610851