Policia

자바스크립트 처음 알게된 사실..

3531202398_1641529877.1772.png

 

홈페이지내에 수치계산하는게 있는데 출력이 이상해서 몇가지 테스트 해보니

 

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개

헉.. 이진법의 세계에서는 흔히 있는 일 아니었던가요? ㅋㅋ
전체에 10을 곱하여 뺄셈 계산이 끝난 후 나누기 10하면 될까요?ㅋ
곱해서 정수로 만들고 계산한담에 다시 나눠서 소수로 만드는 방법을 씁니다.
댓글을 작성하시려면 로그인이 필요합니다.

자유게시판

+
제목 글쓴이 날짜 조회
4년 전 조회 1,919
4년 전 조회 1,738
4년 전 조회 1,222
4년 전 조회 1,382
4년 전 조회 7,414
4년 전 조회 1,292
4년 전 조회 1,199
4년 전 조회 1,277
4년 전 조회 1,249
4년 전 조회 1,514
4년 전 조회 1,566
4년 전 조회 2,218
4년 전 조회 1,279
4년 전 조회 1,750
4년 전 조회 1,520
4년 전 조회 1,288
4년 전 조회 1,219
4년 전 조회 2,179
4년 전 조회 1,280
4년 전 조회 1,448
4년 전 조회 1,843
4년 전 조회 1,432
4년 전 조회 2,260
4년 전 조회 1,266
4년 전 조회 1,218
4년 전 조회 2,198
4년 전 조회 1,329
4년 전 조회 1,769
4년 전 조회 1,153
4년 전 조회 1,728