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