자바스크립트 처음 알게된 사실.. 정보
자바스크립트 처음 알게된 사실..본문
홈페이지내에 수치계산하는게 있는데 출력이 이상해서 몇가지 테스트 해보니
var t1 = 150.7
var t2 = 5.9
일때
t1 - t2 하면 144.8이 아니라 144.79999..8 이 나오네요
이유가 궁금해서 쫌 찾아보니
이렇게 나오는 이유는 javascript가 64bit의 소숫점 숫자를 사용하기 때문이라고하네요
이때문에 소수점 계산에서 정밀도 오류가 나타난다고하네요
10진법 기반의 숫자와 다르게 컴퓨터는 2진법으로 동작하기때문이라고 하네요
그래서 해결방법은 계산한 결과값에 toFixed()함수를 써서 해결해야합니다
t3 = t1 - t2;
t3.toFixed(1); // 144.8
자바스크립트 소수점 계산이 왜 이상한가했더니 저런 이유가있었네요
추천
3
3
댓글 3개
헉.. 이진법의 세계에서는 흔히 있는 일 아니었던가요? ㅋㅋ
전체에 10을 곱하여 뺄셈 계산이 끝난 후 나누기 10하면 될까요?ㅋ
곱해서 정수로 만들고 계산한담에 다시 나눠서 소수로 만드는 방법을 씁니다.