float 소수점 8자리 저장 질문

float 소수점 8자리 저장 질문

QA

float 소수점 8자리 저장 질문

답변 3

본문

안녕하세요.

 

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

 

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

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

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

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

 

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

이 질문에 댓글 쓰기 :

답변 3

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

 


echo sprintf("%.6lf", 9.4e-05);

 

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

 

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

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

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

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

이런식으로요

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

 

DECIMAL(M,D)

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

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

답변을 작성하시기 전에 로그인 해주세요.
전체 1
© SIRSOFT
현재 페이지 제일 처음으로