카테고리 없음

소수점이 이상하게 나오는 이유

seongjin08 2021. 11. 26. 15:44

디비에는 0.1 로 잘 들어있는데 디비에서 값을 가져오면  0.1 이 아닌  0.1000001213 이런 

이상한 숫자가가 나온다.

그 이유를 알려면 bit 와 byte 를 알아야하는데 

 8bit 는 1byte 이다.

 

컴퓨터는 이진법으로 정보를 받고 정보를 읽는다.  0과 1

0과 1은 전압이 있냐 없냐 인데 이걸 데이터를 표현하는 것이다.

1 bit = 2^1

2bit = 2^2

3bit =2^3

이런식으로 데이터 표현할수 있는 데이터의 양이 된다

1byte = 2^8

4byte = 2^32 즉 4,294,967,296 만큼 데이터를 표현할수 있는 것이다.

 

이렇게 데이터 타입이 있다.

Bloolean 값은 1bit 만 있어도 충분하지만 컴퓨터가 데이터 처리할때 최소 기준이 있어야

하기 때문에 최소 단위를 1byte 기준으로 하기 위해 Bloolean 은 1byte를 

사용하게된다.

이렇게 데이터를 표현하는데 소수점을 표현할때가 문제인것이다.

정확히 데이터로 소수점을 표현하기가 어려운것이다.

나는 분명 0.1 를 입력했고 그걸 mysql 에 저장해서 0.1이 보였지만 그걸 불러오면 

정확한 데이터를 받을 수 없어 0.1 뒤에 00000000123 이런식으로 해석해버리는것이다.

이게 또 데이터베이스 별로 다르고 어떤 언어를 쓰냐에 따라 조금씩 달라지기 때문에

데이터를 불러와서 뒤에 필요없는 부분을 제거해 주고 사용해야한다.

 

나는 지그 javascript 를 사용하기 때문에 

toFixed()

함수를 사용하여 원하는 소수점까지 불러올수있다.

첫째 자리 까지만 필요하면

num.toFixed(1)  이런식으로 사용하면 된다.

 

기본적으로 bit , byte 정도의 기본지식을 가지고 있으면 

프로그래밍의 도움이 된다고 하셨다.!!