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,939
4년 전 조회 1,762
4년 전 조회 1,248
4년 전 조회 1,403
4년 전 조회 7,459
4년 전 조회 1,313
4년 전 조회 1,226
4년 전 조회 1,307
4년 전 조회 1,274
4년 전 조회 1,549
4년 전 조회 1,597
4년 전 조회 2,249
4년 전 조회 1,309
4년 전 조회 1,776
4년 전 조회 1,547
4년 전 조회 1,318
4년 전 조회 1,244
4년 전 조회 2,210
4년 전 조회 1,303
4년 전 조회 1,475
4년 전 조회 1,868
4년 전 조회 1,461
4년 전 조회 2,283
4년 전 조회 1,292
4년 전 조회 1,245
4년 전 조회 2,234
4년 전 조회 1,356
4년 전 조회 1,797
4년 전 조회 1,180
4년 전 조회 1,757