본문 바로가기

JavaScript, HTML, CSS

[JS, 코드 스테이츠]03. Number Methods, Math Methods

목차
1. Number Methods
2. Math Methods

 

1. Number Methods

  • Number.isInteger(value주어진 값이 정수인지 판별.
    • 반환 값: 주어진 값의 정수 여부를 나타내는 Boolean.
Number.isInteger(0);         // true
Number.isInteger(1);         // true
Number.isInteger(-100000);   // true
Number.isInteger(99999999999999999999999); // true

Number.isInteger(0.1);       // false
Number.isInteger(Math.PI);   // false

Number.isInteger(NaN);       // false
Number.isInteger(Infinity);  // false
Number.isInteger(-Infinity); // false
Number.isInteger('10');      // false
Number.isInteger(true);      // false
Number.isInteger(false);     // false
Number.isInteger([1]);       // false

  • parseInt(string[, radix]) 문자열 인자의 구문을 분석해 특정 진수(수의 진법 체계에 기준이 되는 값)의 정수를 반환.
    • 매개변수
      • string: 분석할 값. 만약 string이 문자열이 아니면 문자열로 변환(ToSting 추상 연산) 후 계산. 문자열의 선행 공백은 무시함.
      • radix: string이 표현하는 정수를 나타내는 2와 36사이의 진수(수의 진법 체계에 기준이 되는 값). 생략될경우 10진수로 취급함. 10진수일 경우에도 radix를 쓰는 것을 권장함.
    • 반환 값: 주어진 문자열로부터 분석한 정수. 첫 글자를 숫자로 변환할 수 없다면 NaN을 반환.
parseInt("15");     // 15
parseInt("15.123"); // 15
parseInt("15*3");   // 15
parseInt("-15");    // -15
parseInt("Hello")   // NaN
parseInt(" 0xF", 16); // 15
parseInt(" F", 16);   // 15
parseInt("17", 8);    // 15
parseInt(15.99, 10);  // 15

  • parseFloat(value) 문자열을 분석해 부동소수점 실수로 반환.
    • 반환 값: 주어진 값에서 분석한 부동소수점 수. 분석할 수 없으면 NaN.
parseFloat(3.14); //3.14
parseFloat('3.14'); //3.14
parseFloat('314e-2'); //3.14
parseFloat('0.0314E+2'); //3.14
parseFloat('3.14와 숫자가 아닌 문자들'); //3.14
parseFloat('FF2'); //NaN

  • numObj.toFixed([digits]) 숫자를 고정 소수점 표기법으로 표기해 반환.
    • 매개변수 digits(optional): 소수점 뒤에 나타날 자릿수. 0 이상 20 이하의 값을 사용할 수 있으며, 구현체에 따라 더 넓은 범위의 값을 지원할 수도 있음. 값을 지정하지 않으면 0을 사용.
    • 반환 값: 고정 소수점 표기법을 사용하여 나타낸 수.
    • 예외
      • RangeError: digits가 너무 작거나 너무 클 때. 값이 0과 100사이의 값이라면 RangeError를 유발하지 않음. 구현체에 따라 더 크거나 작은 값을 지원할 수 있음.
      • TypeError: Number가 아닌 객체에서 호출한 경우.
var numObj = 12345.6789;

numObj.toFixed();       // Returns '12346': 반올림하며, 소수 부분을 남기지 않습니다.
numObj.toFixed(1);      // Returns '12345.7': 반올림합니다.
numObj.toFixed(6);      // Returns '12345.678900': 빈 공간을 0으로 채웁니다.

 


2. Math Methods

  • Math.min([value1[, value2[, ...]]]) 주어진 숫자들 중 가장 작은 값을 반환.
    • 매개변수: 숫자형
    • 반환 값: 주어진 숫자들 중 가장 작은 값. 만약 적어도 1개 이상의 인자값이 숫자형으로 변환이 불가능 한 경우 이 함수는 NaN 를 반환.
  • Math.min([value1[, value2[, ...]]]) 주어진 숫자들 중 가장 큰 값을 반환.
    • 매개변수: 숫자형
    • 반환 값: 주어진 숫자들 중 가장 큰 값. 만약 적어도 1개 이상의 인자값이 숫자형으로 변환이 불가능 한 경우 이 함수는 NaN 를 반환.
console.log(Math.min(2, 3, 1)); // 1
console.log(Math.min(-2, -3, -1)); // -3
console.log(Math.max(1, 3, 2)); // 3
console.log(Math.max('hello', 'world')); // NaN

  • Math.floor() 주어진 숫자와 같거나 작은 정수 중에서 가장 큰 수를 반환(소숫점 아래 버림).
  • Math.round() 입력값을 반올림한 수와 가장 가까운 정수 값을 반환.
console.log(Math.floor( 45.95)); //  45
console.log(Math.floor(-45.95)); // -46
console.log(Math.round( 20.5 )); //  21
console.log(Math.round(-20.5 )); // -20

  • Math.random() 0을 포함하면서 1 보다는 작은 범위의 의사랜덤(pseudo-random) 수를 부동소수점(floating-point)으로 반환하고, 이를 원하는 범위로 스케일(scale)할 수 있다. 난수(random number) 생성 알고리즘의 초기 시드(seed)는 구현(implementation)에서 선택하며 이는 사용자에 의해 선택되거나 초기화될 수 없다.
    • Math.random()은 암호적으로 안전한 난수를 제공하지 않는다. 보안과 관련된 어떤 것에도 이를 사용하면 안된다. 대신 Web Crypto API, 정확하게는 window.crypto.getRandomValues() 메소드를 이용.
    • 반환 값: 0 이상 1 미만의 부동 소수점 의사 난수.
// 0 (포함) and 1 (불포함) 난수를 반환
function getRandom() {
  return Math.random();
}

// min (포함) 과 max (불포함) 사이의 난수를 반환
function getRandomArbitrary(min, max) {
  return Math.random() * (max - min) + min;
}

// min (포함) 과 max (불포함) 사이의 임의 정수를 반환
// Math.round() 를 사용하면 고르지 않은 분포를 얻게된다!
function getRandomInt(min, max) {
  return Math.floor(Math.random() * (max - min)) + min;
}

// min (포함) 과 max (포함) 사이의 임의 정수를 반환
function getRandomIntInclusive(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

//일정한 길이의 임의의 글자 반환
function getGUID(length) {
  let alphabets = 'abcdefghijklmnopqrstuvwxyz';
  let ans = '';
  while(ans.length < length){
    ans = ans + alphabets[Math.floor(Math.random() * alphabets.length)];
  }
  return ans;
}

  • Math.abs(value) 주어진 숫자의 절대값을 반환.
Math.abs('-1');     // 1
Math.abs(-2);       // 2
Math.abs(null);     // 0
Math.abs('');       // 0
Math.abs([]);       // 0
Math.abs([2]);      // 2
Math.abs([1,2]);    // NaN
Math.abs({});       // NaN
Math.abs('string'); // NaN
Math.abs();         // NaN

  • Math.sqrt(value) 숫자의 제곱근을 반환
  • Math.pow(base, exponent) 함수는 base를 exponent번 곱한 결과, 즉 base^(exponent)를 반환
Math.sqrt(9); // 3
Math.sqrt(2); // 1.414213562373095

Math.sqrt(1);  // 1
Math.sqrt(0);  // 0
Math.sqrt(-1); // NaN

Math.pow(7, 2);    // 49
Math.pow(4, 0.5);  // 2 (제곱근 4)
Math.pow(2, 1/3);  // 1.2599210498948732 (세제곱근 2)
Math.pow(7, -2);   // 0.02040816326530612 (1/49)
Math.pow(8, -1/3); // 0.5
Math.pow(-7, 2);   // 49 (제곱하면 양수)
Math.pow(-7, 3);   // -343 (세제곱은 음수일 수 있음)
Math.pow(-7, 0.5); // NaN (음수의 제곱근은 실수 범위에서 없음)