2014-12-05 4 views
-1

비슷한 질문에 대한 답변을 herehere으로 보았습니다. 모두가 가격에 DECIMAL 유형을 사용하도록 제안 된 것 같습니다. 그러나 일반적으로 가격이 1 센트 이하로 떨어지지 않으므로 단위를 "달러"에서 "센트"로 변경하여 INT 유형을 가격으로 사용할 수 있습니까? 예 : 799 달러는 799 센트와 같습니다.INT 대 MySQL의 "Price"열의 DECIMAL?

저장 공간, 읽기/쓰기 속도, 기능 (MIN, MAX, SUM 등) 또는 기타 측면을 사용할 때의 성능과 관련하여 DECIMAL (9,2)와 같은 것보다 INT를 선택하면 어떤 이점이 있습니까?

+0

계산 속도가 빠르지 만 그 값은 직관력이 떨어집니다. 올바른 위치에 소수점을 넣는보다 직관적 인 버전을 사용하는 것이 좋습니다 - 값을 센트로 저장하는 것은 벌레가 기다리고있는 것처럼 보입니다. –

+0

나는 정수를 저장하는 것이 성능상의 이점이라고 주장했다. 개인적으로, 나는 그것을 믿지 않는다. 나는 데이터 세트가 진정으로 큰 차이를 만들어 낼 수 있어야한다고 생각합니다. – Strawberry

+0

@ GordonLinoff : 어떤 종류의 버그? 그것은 일반적으로 사용되는 방법입니다. –

답변

-2

컴퓨터에서 수레를 관리하기가 어렵 기 때문에 센트를 사용하는 것이 좋습니다. 예를 들어 js에서 0,1 + 0,2를 다시 호출 할 수 있다면 0,3을 반환하지 않습니다.

따라서 돈을 처리 할 때 특히 센트를 사용하는 것이 가장 좋습니다.

편집 : 아마도 충분히 명확하지 않았습니다. 내 생각을보다 자세하게 설명하는 태드만이 남긴 긴 의견을보십시오.

질문은 다른 사람보다 int를 선택하는 것이 유리한 점이었습니다. 내 대답은 '예'이고 네가 스크립트에서 정보를 처리 할 때 (db가 일반적으로 단독으로 사용되지 않기 때문에 일어날 일) 때문에 int를 사용하여 돈을 조작하는 것이 가장 좋습니다. 질문에서 조금 벗어 났습니까? 어쩌면 당신이 얼마나 넓은 마음을 가지고 있는지에 달려 있습니다. -1 마땅한가요? 나는 그렇게 생각하지 않는다.

+0

float는 소수가 아닙니다. – Strawberry

+2

누가 부유물에 대해 언급 했습니까? 질문은 int 대 십진수입니다. –

+0

그리고 데이터베이스는 무엇을 의미합니까? 스크립트와 함께 사용 하시겠습니까? – M0rkHaV

1

적용 가능한 가장 작은 단위로 통화 값을 일반 오래된 정수로 나타내는 것이 좋습니다. 일반적으로 센트를 사용한다는 것을 의미하는 달러와 같은 경우에는 작은 단위를 사용해야 할 수도 있습니다. 이것의 인스턴스는 반올림으로 인해 각각 0으로 돌아갈 수있는 몇 센트 밖에되지 않는 거래에 대해 5 % 수수료를 지불하는 것입니다. 이 경우 "밀리 센트"를 사용하면 더 잘 작동합니다.

고정 된 위치의 열은 충실하게 보존되지만 사용중인 응용 프로그램 플랫폼은 그 값을 잘 처리하지 않을 수 있으며 조심하지 않으면 기묘한 부동 소수점 동작이 시작될 수 있습니다.

달러를 표현하기 위해 내부 단위와 달러를 변환해야하는 것은 다소 귀찮은 일일 수 있지만 회계에 설명하는 것보다 훨씬 비용이 적게 듭니다.

성능 측면에서 보면 INT 값이 기본적으로 가장 빠릅니다. 그들은 또한 일반적인 용어로 가장 콤팩트합니다. 많은 양의 달러를 다루는 경우 +/- 2.1B를 초과하는 값을 저장해야하는 경우 BIGINT를 사용해야합니다. 이는 응용 프로그램 스크립팅 언어가 준비되지 않은 경우 부동 소수점으로 렌더링하여 문제를 일으킬 수있는 문제를 나타낼 수 있습니다.

항상 값이 작은 코드를 철저히 테스트하십시오.