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,920
4년 전 조회 1,739
4년 전 조회 1,223
4년 전 조회 1,384
4년 전 조회 7,416
4년 전 조회 1,293
4년 전 조회 1,200
4년 전 조회 1,279
4년 전 조회 1,250
4년 전 조회 1,516
4년 전 조회 1,569
4년 전 조회 2,220
4년 전 조회 1,281
4년 전 조회 1,754
4년 전 조회 1,523
4년 전 조회 1,290
4년 전 조회 1,220
4년 전 조회 2,180
4년 전 조회 1,281
4년 전 조회 1,450
4년 전 조회 1,845
4년 전 조회 1,433
4년 전 조회 2,263
4년 전 조회 1,271
4년 전 조회 1,222
4년 전 조회 2,203
4년 전 조회 1,329
4년 전 조회 1,774
4년 전 조회 1,156
4년 전 조회 1,731