숫자를 소수점 이하까지 표시하려면 어떻게 하면 됩니까? 정보
숫자를 소수점 이하까지 표시하려면 어떻게 하면 됩니까?본문
검색해보니
---------------------------------------------------------------------------------------------
필드타입 decimal
값 ( 정수, 소수) 3,2
예) 정수 5자리, 소숫점 2자리
5,2
위 예제의 경우, 정수는 최대5자리, 소숫점은 2자리까리 제한됩니다.
또한 필드에 값 입력시 정수값만 입력하면 출력시 뒤에 소숫점 2자리는 자동으로 .00 으로 출력됩니다.
주로 해외 쇼핑몰작업할때, 펑션처리가 귀찮은경우, 위와같이 금액필드를 바꾸어서 처리합니다.
값 ( 정수, 소수) 3,2
예) 정수 5자리, 소숫점 2자리
5,2
위 예제의 경우, 정수는 최대5자리, 소숫점은 2자리까리 제한됩니다.
또한 필드에 값 입력시 정수값만 입력하면 출력시 뒤에 소숫점 2자리는 자동으로 .00 으로 출력됩니다.
주로 해외 쇼핑몰작업할때, 펑션처리가 귀찮은경우, 위와같이 금액필드를 바꾸어서 처리합니다.
-----------------------------------------------------------------------------------------------
다음과 같은 글이 있는데 어떻게 적용하라는 건지....잘 모르겠습니다
부탁드립니다.
댓글 전체
디비에 접속해서 적용하려는 테이블의 해당필드의 필드속성을 decimal, 길이값을 3,2...5,2와 같은 형식으로 잡으라는 뜻같네요...
올리신 내용은 DB 쪽을 고치라는 것인데
정작 하고 싶은 것이 무엇인지 더 자세히 써 주세요.
정작 하고 싶은 것이 무엇인지 더 자세히 써 주세요.
네
가격등을 표시할때 소숫점 이하까지 표시하려고 합니다.
즉 123.45 이렇게 하려고 하는데
입력하면 현재는 123 이렇게만 나옵니다.
감사합니다.
가격등을 표시할때 소숫점 이하까지 표시하려고 합니다.
즉 123.45 이렇게 하려고 하는데
입력하면 현재는 123 이렇게만 나옵니다.
감사합니다.

1. 필드타입 decimal
decimal 은 압축하지 않은 고정 소수표현입니다. 숫자이긴 한데, 마치 문자열처럼 각자리가 1character 공간을 차지하는 형입니다.
float은 부동 소수로써, 두가지 표현법이 있는데, float(p) / float(m, d)입니다.
float(p)는 단정도 소수표현법이며 p는 0-24까지 가능합니다. 이보다 큰 숫자(25-53)를 지정할 경우에는 double형처럼 복정도 소수로 바뀝니다. 내부적으로는 실질적으로 float이나 double과 동일한 자료형입니다만(그래서 어떤 수치를 주든 float으로 표현됩니다.) 외부표시유효자리수등이 지정되지 않은 상태입니다.
float(m,d)는 float에 전체자리수와 소수점이하 자리수를 지정해줄 때 사용합니다.
** decimal의 경우 고정소수표현으로 문자열처럼 처리되기 때문에 정확한 소수값을 유지하고 싶을 때 사용됩니다만, 연산은 부동 소수점 연산되므로 연산결과에 주의해야 합니다.
예를 들면...DB테이블에
"test decimal(10,8) NOT NULL "
와 같은 test 필드가 있다면 그 필드에는 10자리의 데이터가 들어가는데 8자리는 소수점이고, 2자리가 정수가 되겠죠.
현재 저장되는 필드타입이 decimal 이 아니라면 필드타입을 바꿔야 겠죠.
123.45 와 같이 저장하려면...
"test decimal(5,2) NOT NULL " 와 같이 필드타입이 되어야 되겠지요.
!주의주의
decimal의 경우 고정소수표현으로 문자열처럼 처리되기 때문에 정확한 소수값을 유지하고 싶을 때 사용됩니다만, 연산은 부동 소수점 연산되므로 연산결과에 주의해야 합니다.
decimal 은 압축하지 않은 고정 소수표현입니다. 숫자이긴 한데, 마치 문자열처럼 각자리가 1character 공간을 차지하는 형입니다.
float은 부동 소수로써, 두가지 표현법이 있는데, float(p) / float(m, d)입니다.
float(p)는 단정도 소수표현법이며 p는 0-24까지 가능합니다. 이보다 큰 숫자(25-53)를 지정할 경우에는 double형처럼 복정도 소수로 바뀝니다. 내부적으로는 실질적으로 float이나 double과 동일한 자료형입니다만(그래서 어떤 수치를 주든 float으로 표현됩니다.) 외부표시유효자리수등이 지정되지 않은 상태입니다.
float(m,d)는 float에 전체자리수와 소수점이하 자리수를 지정해줄 때 사용합니다.
** decimal의 경우 고정소수표현으로 문자열처럼 처리되기 때문에 정확한 소수값을 유지하고 싶을 때 사용됩니다만, 연산은 부동 소수점 연산되므로 연산결과에 주의해야 합니다.
예를 들면...DB테이블에
"test decimal(10,8) NOT NULL "
와 같은 test 필드가 있다면 그 필드에는 10자리의 데이터가 들어가는데 8자리는 소수점이고, 2자리가 정수가 되겠죠.
현재 저장되는 필드타입이 decimal 이 아니라면 필드타입을 바꿔야 겠죠.
123.45 와 같이 저장하려면...
"test decimal(5,2) NOT NULL " 와 같이 필드타입이 되어야 되겠지요.
!주의주의
decimal의 경우 고정소수표현으로 문자열처럼 처리되기 때문에 정확한 소수값을 유지하고 싶을 때 사용됩니다만, 연산은 부동 소수점 연산되므로 연산결과에 주의해야 합니다.
!주의주의
decimal의 경우 고정소수표현으로 문자열처럼 처리되기 때문에 정확한 소수값을 유지하고 싶을 때 사용됩니다만, 연산은 부동 소수점 연산되므로 연산결과에 주의해야 합니다.
이 부분이 궁금하네요...자세한 답변 감사드립니다 죄송하지만
이 부분 조금 부연 설명을 부탁합니다
decimal의 경우 고정소수표현으로 문자열처럼 처리되기 때문에 정확한 소수값을 유지하고 싶을 때 사용됩니다만, 연산은 부동 소수점 연산되므로 연산결과에 주의해야 합니다.
이 부분이 궁금하네요...자세한 답변 감사드립니다 죄송하지만
이 부분 조금 부연 설명을 부탁합니다
센트 단위를 표현하고자 하신다면
그냥 int로 하시고
표기할 때마다 100으로 나누는 방법도 고려해 볼 만 합니다.
float는 int만큼 정확한 계산을 하지 못합니다.
그냥 int로 하시고
표기할 때마다 100으로 나누는 방법도 고려해 볼 만 합니다.
float는 int만큼 정확한 계산을 하지 못합니다.
rolo 님 그럼 어떻게 변경하라는 이야기이신지요?
조금 자세히 부탁드립니다. 감사합니다
조금 자세히 부탁드립니다. 감사합니다
DB쪽은 int 내 버려 두고
php에서 표시할 때 number_format()을 이용해서 소숫점이하2자리까지 표시하면 됩니다.
자세한 것은 소스가 없으므로 힘드네요.
php에서 표시할 때 number_format()을 이용해서 소숫점이하2자리까지 표시하면 됩니다.
자세한 것은 소스가 없으므로 힘드네요.
알겠습니다 지금부터 number_format()을 공부해보겠습니다...감사합니다

보통 백분율의 표시를
$rate = (값 / 총계 * 100);
$s_rate = number_format($rate, 2);
해서 $s_rate를 찍으면 소숫점 2자리 정도는 찍어 줍니다만....
$rate = (값 / 총계 * 100);
$s_rate = number_format($rate, 2);
해서 $s_rate를 찍으면 소숫점 2자리 정도는 찍어 줍니다만....
number_format($나타나는 숫자,2);
이렇게 해주니 소수점 2자리까지 나오는 군요 감사합니다
위에서 3을 적으면 3자리까지....
이렇게 해주니 소수점 2자리까지 나오는 군요 감사합니다
위에서 3을 적으면 3자리까지....
그런데 표현은 되는데 기입이 안되네요?
다시 db를 decimal 로 바꾸어야만 합니까?
감사합니다.
다시 db를 decimal 로 바꾸어야만 합니까?
감사합니다.
디비를 float 로 처리하니 기입도 잘되고
표현도 잘되고 연산도 잘 됩니다
도움주신 여러분께 감사드립니다 좋은 하루 되시기 바랍니다.
표현도 잘되고 연산도 잘 됩니다
도움주신 여러분께 감사드립니다 좋은 하루 되시기 바랍니다.