728x90
자바스크립트에서 소수점 연산 시 발생하는 오류는 부동소수점 표현 방식의 한계 때문에 종종 발생합니다.
1. 컴퓨터로 숫자를 표현하는 데에는 한계가 있고
2. 10진수로 표현되는 소수를 2진수로 표현하려면 몇몇의 경우 무한소수가 발생하는데,
3. 무한수를 유한하게 표현하려다 보니 미세한 값들이 초과되거나 손실되어
4. 계산 오류가 일어난다.
위와 같은 오류로 자바스크립트에서는 0.1 + 0.2가 정확히 0.3이 나오지 않는 등 예상치 못한 결과가 나올 수 있습니다.
이러한 문제를 해결하기 위한 다양한 방법을 알아보겠습니다.
1. toFixed() 메서드
- 소수점 이하 자릿수를 지정하여 반올림한 문자열 값을 반환합니다.
- 주의할 점: 반환값이 문자열이므로 숫자 연산에 사용하려면 다시 숫자로 변환해야 합니다.
let a = 0.1;
let b = 0.2;
console.log((a + b).toFixed(1)); // '0.3'
반환되는 값이 문자열이기 때문에 만일 숫자로 사용하고 싶다면 앞에 단항 연산자로 덧셈 연산자를 붙여주면 됩니다
let a = 0.1;
let b = 0.2;
console.log(+(a + b).toFixed(1)); // 0.3
2. Math 객체의 메서드 활용
- 메서드 종류 : Math.floor, Math.ceil, Math.trunc, Math.round
let a = 0.1;
let b = 0.2;
console.log(Math.round((a + b) * 10) / 10); // 0.3
참고 링크 : https://bigtop.tistory.com/47
728x90
'STUDY > JavaScript' 카테고리의 다른 글
[JS] contenteditable div태그에서 text만 사용하기 (0) | 2024.11.23 |
---|---|
[JS] 자바스크립트 new URL 오탈자 chrome 브라우저 보정 (0) | 2024.11.13 |
async / await 병렬 처리 - Promise.all() (1) | 2024.10.11 |
[JS] 클립보드 복사 기능 writeText() (0) | 2024.08.13 |
[JS] 다운로드 기능 - a 태그 download 속성 (0) | 2024.07.30 |