Math객체 - JS의 내장 객체
절댓값(Absolute Number) - Math.abs(x)를 하면 x의 절댓값이 리턴
Math.abs(-10); // 10
최댓값(Maximum) - 파라미터로 여러 수를 넘겨주면 그중 가장 큰 값이 리턴
Math.max(2,6,0,8); //8
최솟값(Minimum) - 파라미터로 여러 수를 넘겨주면, 그중 가장 작은 값이 리턴
Math.min(2, -1, 4, 5, 0); // -1
거듭제곱 (Exponentiation) - Math.pow(x, y)를 하면 x의 y승의 결괏값이 리턴
Math.pow(2, 3); //8
제곱근 (Square Root) - Math.sqrt(x)를 하면 x의 제곱근이 리턴
Math.sqrt(49); //7
반올림 (Round) - Math.round(x)를 하면 x의 반올림(기준 0.5 이상)된 값이 리턴
Math.round(2.49); // 2
버림과 올림 (Floor and Ceil) - Math.floor(x)을 하면 x의 버림 값이, Math.ceil(x)을 하면 x의 올림 값이 리턴
이 경우, 소수 부분이 얼마 인지와는 상관 d없음
Math.floor(2.8); //2
Math.ceil(2.4)); //3
난수 (Random) - Math.random을 하면 0 이상 1 미만의 값이 랜덤으로 리턴
console.log(Math.random());
실수의 오차
let a = 0.1 + 0.2;
console.log(a); //0.30000000000000004
부정확한 숫자 계산의 원인 - 사람과 컴퓨터과 숫자를 다루는 방식이 다르기 때문
3분의 1을 명확한 10진수로 다루지 못하듯이 2진수로 변환했을 때 무한소수로 나타나는 계산오류를 완벽하게 방지하는 방법은 없다. 따라서 상황에 따라 적절한 수로 반올림 하는 수밖에 없다
방법
1. toFixed메소드로 필요한 자릿수에 맞춰서 반올림되게 (리턴값이 문자형인 점 주의)
let a = 0.1 + 0.2;
console.log(a.toFixed(1)); //0.3
console.log(+a.toFixed(1)); //0.3
console.log(Number(a.toFixed(1))); //0.3
2. Math객체의 round메소드 활용 - 필요한 소수점 자릿수만큼 10의 거듭제곱을 곱해 먼저 정수를 만들고 round메소드로 계산하고 다시 그만큼 나눠주는 방식
console.log(Math.round(a * 10) / 10); //0.3
Math객체 더 알아보기
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math
'[코드잇] > JavaScript 백엔드 개발자' 카테고리의 다른 글
모던 자바스크립트 -자바스크립트의 동작 원리- (0) | 2023.02.21 |
---|---|
모던 자바스크립트 -모던 자바스크립트 이해하기- (0) | 2023.02.21 |
프로그래밍과 데이터 in javaScript -내장객체(Date)- (0) | 2023.02.19 |
프로그래밍과 데이터 in javaScript -자료형 심화- (0) | 2023.02.19 |
프로그래밍과 데이터 in javaScript -배열- (0) | 2023.02.19 |