테스트 사이트 - 개발 중인 베타 버전입니다

float 소수점 8자리 저장 질문 채택완료

PIREE 7년 전 조회 3,315

안녕하세요.

 

요즘 파고 있는 암호화폐 관련 순위표를 만들다 안풀리는 문제가 있어서 질문합니다.

 

순위표 테이블에 소수점 이하까지 있는 usd 가격 칼럼의 데이터형을 float로 했는데 

6.5$ 처럼 소수점 6자리 이하는 잘 저장됩니다.

그런데 0.000094를 저장하면 9.4e-05$ 처럼 표시되네요.

그래서 float(5,8) 이렇게 해봤더니 모든 값이 소수점 8자리로 표시되고 값도 정확히 저장되지 않네요.

 

0.000094를 0.000094로 온전히 저장하려면 어떤 데이터 타입으로 해야 할까요?

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트
베원
7년 전

제대로 저장되고 있는게 맞습니다.

 

</p>

<p>echo sprintf("%.6lf", 9.4e-05);</p>

<p>

 

이렇게 해서 출력하면 0.000094 라고 제대로 나옵니다.

 

9.4e-05 는 9.4 x 10^(-5) 의 의미입니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

P
PIREE
7년 전
답변 고맙습니다.

댓글을 작성하려면 로그인이 필요합니다.

s
7년 전

혹시 DB에 저장하려 하신다면 mysql의 경우 필드타입을 decimal 사용하시면 될 것 같습니다.

 

DECIMAL(M,D)

M은 소수 부분을 포함한 실수의 총 자릿수를 나타내며, 최댓값은 65입니다.

D는 소수 부분의 자릿수를 나타내며, D가 0이면 소수 부분을 가지지 않습니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

P
PIREE
7년 전
decimal도 있었군요.

댓글을 작성하려면 로그인이 필요합니다.

7년 전

저장은 제대로 된거는 맞네요

단지 표시할때  9.4e-05$ 가 아닌 0.000094 로 표현되면 되는거 아닌가요?

number_format($float변수, 표시할자리수, '.', '');

이런식으로요

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

P
PIREE
7년 전
그렇군요.
알려줘서 고맙습니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인