Math 객체의 메서드Math.round()Math.round(1.5); // 2
Math.round(1.4); // 1Math.floor()Math.floor(1.9); // 1
Math.floor(3.14); // 3Math.ceil()Math.ceil(1.1); // 2
Math.ceil(0.01); // 1Math.random()설명: 0 이상 1 미만의 랜덤한 실수를 반환합니다.
사용 예시: 랜덤 값 생성, 배열의 요소를 무작위로 선택할 때 자주 사용.
예시:
Math.random(); // 0.123456... (예시 값)
응용 예시: 1~10 사이의 랜덤 정수 생성
const randomNum = Math.floor(Math.random() * 10) + 1; // 1부터 10 사이의 정수
Math.max()Math.max(1, 5, 3, 7, 2); // 7
Math.max(-1, -5, -3, -7, -2); // -1Math.min()Math.min(1, 5, 3, 7, 2); // 1
Math.min(-1, -5, -3, -7, -2); // -7Math.abs()Math.abs(-10); // 10
Math.abs(5); // 5Math.trunc()Math.trunc(1.9); // 1
Math.trunc(-1.9); // -1Math.pow()Math.pow(2, 3); // 8 (2의 3제곱)
Math.pow(5, 2); // 25 (5의 2제곱)Math.sqrt()Math.sqrt(4); // 2
Math.sqrt(16); // 4Math.cbrt()Math.cbrt(8); // 2
Math.cbrt(27); // 3Math.sign()Math.sign(10); // 1
Math.sign(-10); // -1
Math.sign(0); // 0Math.log()Math.log(1); // 0
Math.log(Math.E); // 1
Math.log(10); // 2.302...Math.log10()Math.log10(10); // 1
Math.log10(100); // 2
Math.log10(1000); // 3Math.exp()e의 거듭제곱 값을 반환합니다.Math.exp(1); // 2.718...
Math.exp(2); // 7.389...자주 사용되는 메서드 순서 요약
Math.round()- 반올림Math.floor()- 내림Math.ceil()- 올림Math.random()- 랜덤 값 생성Math.max()- 최대값Math.min()- 최소값Math.abs()- 절대값Math.trunc()- 소수점 제거Math.pow()- 거듭제곱Math.sqrt()- 제곱근Math.cbrt()- 세제곱근Math.sign()- 부호 반환Math.log()- 자연 로그Math.log10()- 상용 로그Math.exp()- 지수 함수
parseInt vs floorparseInt()와 Math.floor()의 차이점을 이해하려면 두 메서드가 숫자를 처리하는 방식의 차이를 정확히 알아야 합니다. 아래에서 각각의 메서드에 대해 자세히 설명하고, 예시를 통해 어떻게 다르게 동작하는지 보여드리겠습니다.
parseInt() 메서드parseInt()는 문자열을 정수로 변환하는 데 주로 사용됩니다.console.log(parseInt("10.56")); // 10 - 문자열 "10.56"을 정수로 변환하여 10 반환
console.log(parseInt(4.99)); // 4 - 4.99의 정수 부분만 반환
console.log(parseInt(4.01)); // 4 - 4.01의 정수 부분만 반환
위 예시에서 보듯이 parseInt()는 소수점을 잘라내고, 정수 부분만 가져옵니다. 이 때문에 "내림"이 아니라 단순히 소수점 이하를 잘라내는 기능입니다.
Math.floor() 메서드Math.floor()는 전달된 숫자에 대해 항상 내림 처리를 합니다.Math.floor()는 인수로 전달된 숫자의 소수점 이하를 모두 버리고, 해당 숫자보다 작거나 같은 가장 큰 정수를 반환합니다.console.log(Math.floor(4.99)); // 4 - 내림하여 4 반환
console.log(Math.floor(4.01)); // 4 - 내림하여 4 반환
console.log(Math.floor(-4.99));// -5 - 내림하여 -5 반환 (음수일 경우 절대값이 커짐)
Math.floor()는 항상 내림 처리를 하기 때문에 음수에서도 정수 부분을 내림하여 더 작은 값이 나옵니다. 이 부분이 parseInt()와의 중요한 차이점 중 하나입니다.
parseInt()와 Math.floor()의 차이점parseInt()는 단순히 정수 부분만 추출하기 때문에 음수의 경우 정수 부분만 가져오므로 절대값이 작아집니다.Math.floor()는 소수점 이하를 내림하여 음수의 경우 절대값이 커집니다.// 양수 예시
console.log(parseInt(3.7)); // 3 - 정수 부분만 가져옴
console.log(Math.floor(3.7)); // 3 - 내림 처리로 3 반환
// 양수 예시 2
console.log(parseInt(8.99)); // 8 - 정수 부분만 가져옴
console.log(Math.floor(8.99)); // 8 - 내림 처리로 8 반환
// 음수 예시
console.log(parseInt(-3.7)); // -3 - 정수 부분만 가져오므로 절대값이 작아짐
console.log(Math.floor(-3.7)); // -4 - 내림 처리로 -4 반환 (절대값이 커짐)
// 음수 예시 2
console.log(parseInt(-8.99)); // -8 - 정수 부분만 가져옴
console.log(Math.floor(-8.99)); // -9 - 내림 처리로 -9 반환 (절대값이 커짐)
Math.floor(Math.random() * 10)와 parseInt(Math.random() * 10)의 차이점Math.random()은 0(포함)에서 1(제외) 사이의 숫자를 반환합니다. 이를 10으로 곱하면 0.0에서 9.999...까지의 숫자가 생성됩니다. 이 숫자를 각각 Math.floor()와 parseInt()로 처리하면 다음과 같은 차이점이 있습니다:
Math.floor(Math.random() * 10)는 0부터 9까지의 정수를 정확하게 반환합니다. 내림 처리를 하기 때문에 소수점을 버리고, 항상 0에서 9까지의 정수가 나옵니다.parseInt(Math.random() * 10)는 대부분의 경우 0부터 9까지의 정수를 반환하지만, 일부 예외적으로 예상하지 못한 값을 반환할 수도 있습니다.for (let i = 0; i < 20; i++) {
const randomValue = Math.random() * 10;
console.log(`Math.floor: ${Math.floor(randomValue)}, parseInt: ${parseInt(randomValue)}`);
}
위 코드를 실행해보면 거의 대부분 같은 결과를 보여주지만, parseInt()는 간혹 소수점 이하가 너무 작은 경우 처리에서 예기치 않은 결과를 반환할 수 있습니다. 예를 들어 parseInt()가 9.999...와 같은 값을 10으로 잘라내는 경우도 있을 수 있습니다.
parseInt()와 Math.floor()의 결과는 동일합니다.parseInt()는 절대값이 작아지는 반면, Math.floor()는 절대값이 커집니다.Math.floor()를 사용하는 것이 더 안전합니다. parseInt()는 문자열을 정수로 변환할 때 사용하는 것이 좋습니다.const values = [3.5, 4.7, -3.5, -4.7, 0.999, -0.999, Math.random() * 10];
values.forEach(value => {
console.log(`Value: ${value}, parseInt: ${parseInt(value)}, Math.floor: ${Math.floor(value)}`);
});
위 코드에서 다양한 값에 대해 parseInt()와 Math.floor()의 결과를 비교하여 차이점을 더욱 명확히 볼 수 있습니다.
Math.floor()는 내림을 필요로 할 때,
parseInt()는 문자열을 정수로 변환할 때 사용하는 것을 권장.
Math.floor(Math.random() * 10)과parseInt(Math.random() * 10)은 비슷해 보일 수 있지만, 실제로는 다르게 동작합니다. 각 메서드의 동작 방식을 살펴보겠습니다.
Math.floor(Math.random() * 10)Math.random()은 0(포함) 이상, 1(제외) 미만의 난수를 생성합니다. 예를 들어, Math.random()의 결과가 0.456이라면, 이를 10으로 곱하면 4.56이 됩니다.Math.floor()는 인수로 전달된 숫자의 소수점 이하를 버리고 내림 처리합니다. 즉, 4.56을 4로 만듭니다.0부터 9 사이의 정수 중 하나를 반환하게 됩니다.parseInt(Math.random() * 10)parseInt()는 문자열을 정수로 변환하는 메서드입니다. 하지만 인수가 숫자일 경우, 소수점 이하를 잘라내고 정수 부분만 반환합니다.parseInt(4.56)이라면 4를 반환합니다.parseInt()는 Math.floor()와 다르게 처리될 수 있습니다. parseInt()는 소수점을 잘라내는 것이므로 내림 또는 반올림과는 다릅니다. 이 때문에 아주 작은 값일 때 오차가 발생할 수 있습니다.두 메서드의 차이를 확인하기 위해 간단한 예제 코드를 보겠습니다.
for (let i = 0; i < 10; i++) {
const randomValue = Math.random() * 10;
console.log(`Math.floor: ${Math.floor(randomValue)}, parseInt: ${parseInt(randomValue)}`);
}
따라서 일관된 결과를 원한다면, Math.floor(Math.random() * 10)을 사용하는 것이 좋습니다. parseInt()는 문자열을 정수로 변환할 때 사용하는 것이 가장 적합합니다.
Math.random() 10 를 통해서 0-9.99999999999 의 랜덤숫자를 얻을 수 있고,
Math.floor(Math.random() 10) 를 통해 0-9까지의 정수를 얻을 수 있다.