728x90
반응형
소수점을 포함한 숫자배열의 합을 구하려고 하였는데, 결과값이 엉뚱하게 나왔다.
소수점 아래 5자리인 수를 12개 더해서 값을 콘솔로 찍었는데 소수점이 아래자리가 5자리보다 많은 수가
찍혀나왔다 ..
왜인지 알아보니 소수점 덧셈계산에 오류가 나는 문제가 자바스크립트 뿐만 아니라 다른언어에도 있었다.
원인은 컴퓨터의 문제라서 정확하게 이해하기 어렵지만,
1. 컴퓨터로 숫자를 표현하는 데에는 한계가 있고
2. 10진수로 표현되는 소수를 2진수로 표현하려면 몇몇의 경우 무한소수가 발생하는데,
3. 무한수를 유한하게 표현하려다 보니 미세한 값들이 초과되거나 손실되어
4. 계산 오류가 일어난다.
정도로 알아두고,
그래도 프로그래밍을 해나가야 하기 때문에 해결방법을 알아보자.
1. toFixed()
toFixed메서드는 파라미터로 0부터 20 의 수를 넘길 수 있는데,
해당 값이 소수점 이후의 자리수를 의미한다.
반환되는 값은 문자열로 반환되므로 반환값을 숫자로 해야한다면 앞에 단항 연산자 + 를 붙여준다.
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
728x90
반응형
'Front > JS & jQuery' 카테고리의 다른 글
[javascript] 배열생성 (0) | 2022.05.03 |
---|---|
[javascript] 배열이 비어있는지 확인하기 (0) | 2022.04.24 |
[javascript] 배열의 최대값, 최소값 구하기 (0) | 2022.04.22 |
[javascript] array.forEach() / array.filter() (0) | 2022.04.21 |
[javascript] async & await (0) | 2022.04.20 |