본문 바로가기
[코드잇]/JavaScript 백엔드 개발자

프로그래밍과 데이터 in javaScript -내장객체(Math)-

by 수민띠 2023. 2. 19.

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