float 소수점 8자리 저장 질문
본문
안녕하세요.
요즘 파고 있는 암호화폐 관련 순위표를 만들다 안풀리는 문제가 있어서 질문합니다.
순위표 테이블에 소수점 이하까지 있는 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이면 소수 부분을 가지지 않습니다.
답변을 작성하시기 전에 로그인 해주세요.