2013-08-29 3 views
1

내가 MySQL의 내 총 합계가 총으로 제출 내 PHP는 형태가 추가하고 112381348.40에 대한 쿼리를 업데이트 할 때데이터 필드 타입은 필요에 따라 작동하지 않습니다

decimal(10,2)로의 유형 설정 저장 필드가 (즉 천 2 백만)

하지만 페치 또는 phpMyAdmin에에서 볼 때, 값이 내 데이터 유형 세트 99999999.99

로 표시, 그것은이어야 10 digits2 decimals 곳이 8 등의 최대 업데이트가 원래대로 2.

내가 잘못 이해하고 있거나 잘못하고 있습니다.

나는 이것을 decimal(13,2)으로 늘린 다음 그것을 볼 수 있음을 알고 있습니다.

그러나 이유를 알고 싶습니다. 10,2이 (가) 발생하지 않는 이유는 무엇입니까?

+0

을 제쳐두고 - 그것은 또한 아마'기능) (A '로 number_format 내부 데이터베이스에 기록 부동 소수점 숫자를 포장 가치가 귀하의 사이트가 다른'NL_NL '같은 로케일이 발생합니다 다중 언어를 구사하는 경우 스패너는 소수점 구분 기호로','를 사용하여 작업합니다. – CD001

답변

4

decimal(m, n)의 사양은 두 가지 인수를 취합니다. 첫 번째는 "정밀도"이고 두 번째는 "스케일"입니다. 구어체 인 경우 첫 번째 숫자는 숫자의 자릿수입니다. 두 번째는 소수점 오른쪽의 자릿수입니다.

따라서 decimal(10, 2)의 사양에는 12,345,678.90, 즉 최대 99,999,999.99와 같은 숫자를 저장할 수 있습니다. 그리고 그것은 최대 숫자입니다.

보다 큰 숫자를 저장하려면 더 큰 정밀도를 사용하십시오. 귀하의 전화 번호는 적어도 decimal(11, 2)이 필요합니다. 그러나 앞으로이 문제가 발생하지 않도록 더 큰 정확도를 제안 할 것입니다.

+0

좋아, 이제 알았어, 나는 그들의 사이트에서 mysql 문서와 혼동을 느낀다. 그래서 간단한 수학이라도 처음 11을 2에서 9로 나눌 수있다. 그리고 2는 소수 자릿수이고 9는 정수가 될 것이다. 자릿수. 제게는 매우 분명합니다. 감사합니다. 좋은 설명에 대한 답을 수락합니다. – sammry

1

float 또는 decimal 필드를 설정하는 경우 첫 번째 int 값은 총 문자 수입니다. 두 번째는 소수점 이하 자릿수입니다. 따라서 :

//decimal(10,2) 
12345678.90 

//decimal(13,2) 
12345678901.23 

//decimal(7,3) 
1234.567 

+0

당신이 잘못한 MySQL의 정말 오래된 버전을 사용하고 있지 않는 한. – CD001

+0

@ CD001, no. 최신 MySQL 버전을 사용하고 있습니다. 모든 답변 주셔서 감사합니다. – sammry

0

11 자리가 있습니다. 첫 번째 숫자는 총 자릿수입니다. 시도 :

DECIMAL(11, 2) 
관련 문제