[JavaScript] 소수점 사칙연산 처리하기 - 2
소수점 사칙연산 처리하는 방법은 소수점 사칙연산 처리하기 - 1 게시글을 읽어보면 된다. 필자도 실제로 위 방법을 사용한다. 그런데 버그가 발생한 경우가 있어 해결하는 방법을 공유하려고 한다. 우선 위 방법대로 하면 어떤 버그가 발생할 수 있는 지 확인해보자. (사실 버그는 아니다.) - (참고 : 해당 게시글에서는 1 게시글 마지막 문제점을 해결하지 못 했습니다. 다음 게시글에서 마저 해결해보도록 하겠습니다.)
소수점 사칙연산 버그
숫자 : 147012.48 이 있다고 하자. 이것을 다른 숫자와 더하기 위해서는 소수점을 없애기 위해 * 100을 해주어야 한다. 그럼 * 100을 해보자. 우리가 원하는 결과는 14701248 이다. 과연 그렇게 값이 나올까?
우리가 예상했던 것과 달리 소수점 아래 0.~~~2 라는 값이 붙었다. * 100 으로 처리하기엔 자바스크립트에서 부족하였다. 그럼 어떻게 해결할 수 있을까? 간단한 해결방법을 알아보자.
소수점 사칙연산 해결방법
해결 방법은 parseInt 함수를 사용하는 것이다. 위 14701248.000000002 값에서 parseInt를 하게 되면 14701248로 우리가 원하는 값이 나오게 된다. 즉 기존 계산하였던 공식에서 parseInt만 추가하면 된다.
기존 예시)
(0.01 * 100 + 0.02 * 100) / 100
수정 예시)
(parseInt(0.01 * 100) + parseInt(0.02 * 100)) / 100
위 처럼 parseInt 함수를 이용하면 손쉽게 위 문제를 해결할 수 있다. 그런데 위 방법에도 주의해야 할 점이 있는데 자바스크립트에서 안전하게 표현할 수 있는 정수 범위를 넘어서면 값을 보장할 수 없다는 것이다. 자바스크립트에서 안전하게 사용할 수 있는 정수 값은 9007199254740991 (Number.MAX_SAFE_INTEGER) 이니 이것을 생각하여 사용하면 좋을 것 같다.
(참고 : 해당 게시글에서는 1 게시글 마지막 문제점을 해결하지 못 했습니다. 다음 게시글에서 마저 해결해보도록 하겠습니다.)
마지막
해당 내용은 틀릴 수도 있다는 것을 감안하여 봐주세요. 틀린 내용 및 오탈자 수정 요청 환영입니다.
'공유 > JavaScript, TypeScript' 카테고리의 다른 글
[JavaScript] JS 기본, 비동기? 싱글 스레드? (0) | 2022.01.01 |
---|---|
[JavaScript] 소수점 사칙연산 처리하기 - 3 (0) | 2021.11.23 |
[JavaScript] 소수점 사칙연산 처리하기 - 1 (0) | 2021.11.18 |
[JavaScript] 소수점 n자리에서 올림, 내림, 반올림 (0) | 2021.11.16 |
[JavaScript] 부동소수점, 소수점 n자리 최대값 계산 (0) | 2021.10.24 |