[JS] 소수점 연산시 오류가 나는 이유(feat. .toFixed(), .parseFloat())

irob·2023년 6월 10일
0
  1. 컴퓨터는 연산할 때 10 + 11 = 22 와같이 그대로 더하지 않고
    1) binary 로 변환한 뒤
    2) 연산함
  1. 이때 소수점은 binary 로 바꾸면 무한소수가 되는 경우가 있다
  1. 이경우 컴퓨터의 용량은 유한하기때문에 적정한 소수점 이하의 숫자는 날려버림 -> 예를 들면 1.10010110010011... => 1.10010110으로!
  1. 이렇게 바뀐 숫자를 연산하면 원래값과 아주 미세하게 다른 값이 도출됨.
  1. 이경우 해결방법 3가지가 있는데...
  • 첫째는 10 to power of x 를 곱해 소수점을 없애서 연산한 뒤 10~으로 나누거나
  • 둘째는 소숫점 계산을 쉽게 해주는 라이브러리를 쓰거나
  • 셋째는 .toFixed() 메소드를 사용해 결과값을 반올림하면됨
  1. 이중 셋째의 경우 주의해야할 사항이 있는데...!
  1. 결과값이 숫자형이 아닌 문자형-string-으로 반환됨... 에러의 온상
  1. string을 number로 바꿔주는 작업이 필요함. .parseFloat(x자리까지 반올림해줘)를 쓴다거나 여러가지 다른 메소드를 사용(Number(), Math.round()등)
profile
borison and me

0개의 댓글