theMoney
유형은 고정 된 분수 정밀도로 통화 금액을 저장합니다. 보다표 8.3. 분수 정밀도는 데이터베이스의에 의해 결정됩니다.lc_monetary설정. 테이블에 표시된 범위는 두 개의 분수 숫자가 있다고 가정합니다.'$ 1,000.00'
. 출력은 일반적으로 후자의 형태이지만 로케일에 따라 다릅니다.
표 8.3. 금전적 유형
이름 | 스토리지 크기 | 설명 | 범위 |
---|---|---|---|
Money |
8 바이트 | 통화 금액 | -92233720368547758.08 ~ +92233720368547758.07 |
이 데이터 유형의 출력은 로케일에 민감하기 때문에로드하는 것이 작동하지 않을 수 있습니다Money
다른 설정이 다른 데이터베이스로의 데이터lc_monetary
. 문제를 피하려면 새 데이터베이스로 덤프를 복원하기 전에 확인하십시오lc_monetary
덤프 된 데이터베이스와 동일하거나 동등한 값이 있습니다.
숫자
, int
및bigint
데이터 유형을 캐스트 할 수 있습니다Money
. 에서 전환Real
및이중 정밀도
데이터 유형은 캐스트를 통해 수행 할 수 있습니다숫자
첫 번째, 예 :
선택 '12 .34 ':: float8 :: numeric :: money;
그러나 권장되지 않습니다. 부동 소수점 번호는 반올림 오류 가능성으로 인해 돈을 처리하는 데 사용해서는 안됩니다.
A Money
값을 캐스트 할 수 있습니다숫자
정밀도 손실없이. 다른 유형으로의 전환은 잠재적으로 정밀도를 잃을 수 있으며 두 단계로도 수행해야합니다.
선택 '52093.89':: money :: numeric :: float8;
aMoney
정수 값에 의한 값은 분수 부분을 0으로 절단하여 수행됩니다. 둥근 결과를 얻으려면 부동 소수점 값으로 나누거나를 캐스팅하십시오.Money
value to숫자
나누기 전Money
나중에. (후자는 정밀 손실 위험을 피하는 것이 바람직합니다.) A시기Money
값은 다른 사람으로 나눈Money
값, 결과는입니다.이중 정밀도
(즉, 돈이 아닌 순수한 숫자); 통화 장치는 부서에서 서로를 취소합니다.
문서에 올바른 것이없는 것이 있으면 일치하지 않습니다.이 양식문서 문제를보고하려면