TIL 57 | Number2(method)

YB.J·2021년 7월 30일
0
post-thumbnail

모던자바스크립트 Deep Dive를 공부하며 알게된 Number 중 Number의 메서드에 대해 정리해보자

✨ Number.mothod()

  • Number.parseFloat()
    Number.parseFloat() 메소드는 문자열을 파싱(parsing)하여, 문자열에 포함된 첫 번째 숫자 부분을 실수 형태로 반환합니다. 문자열에 여러 개의 숫자가 존재하면, 그 중에서 첫 번째 숫자만을 실수 형태로 반환합니다.
    인수는 문자열이어야 한다
Number.parseFloat("12");         // 12
Number.parseFloat("12.34");      // 12.34
Number.parseFloat("12문자열");   // 12
Number.parseFloat("12 34 56");   // 12
Number.parseFloat("문자열 56");  // NaN
  • Number.parseInt()
    Number.parseInt() 메소드는 문자열을 파싱하여, 문자열에 포함된 숫자 부분을  정수 형태로 반환합니다. 문자열에 여러 개의 숫자가 존재하면, 그 중에서 첫 번째 숫자만을 정수 형태로 반환합니다.
    인수는 문자열이어야 한다
    Number.parseInt("12.34")가 return하는 값이 .parseFloat()와 다르다
Number.parseInt("12");         // 12
Number.parseInt("12.34");      // 12
Number.parseInt("12문자열");   // 12
Number.parseInt("12 34 56");   // 12
Number.parseInt("문자열 56"); // NaN
  • Number.isNaN()
    Number.isNaN() 메소드는 인수로 전달된 숫자 값이 NaN인지 검사하여 그 결과를 불리언 값으로 반환한다. 인수의 값이 NaN인 경우에만 true를 반환하며, 숫자가 아닌 인수가 주어졌을 때는 언제나 false를 반환한다.
Number.isNaN(NaN);       // true
Number.isNaN(0 / 0);     // true  ( 0 나누기  0의 값  NaN)
Number.isNaN(13); // false
Number.isNaN(undefined); // false
Number.isNaN(“wecode");  // false
Number.isNaN(true);  // false
  • Number.isFinite()
    Number.isFinite() 메소드는 인수로 전달된 숫자 값이 유한수인지 아닌지 검사하여 결과를 불리언 값으로 반환한다. 무한수(Infinity, -Infinity)이면 false 반환하고, 인수의 값이 NaN, null이면 언제나 false 반환한다.
Number.isFinite(0);        // true
Number.isFinite(Infinity); // false
Number.isFinite(NaN);      // false
Number.isFinite(1);      // false
Number.isFinite(null);      // false
  • Number.isInteger()
    Number.isInteger() 인수로 전달된 숫자 값이 정수인지 검사하여 그 결과를 불리언 값으로 반환한다. 전달된 값이 정수이면 true를 반환하며, 정수가 아니거나, NaN, Infinity와 같은 값은 모두 false를 반환한다.
Number.isInteger(0);        // true
Number.isInteger(-100);     // true
Number.isInteger(0.1);      // false 
Number.isInteger(“weCode"); // false
Number.isInteger(Infinity); // false
Number.isInteger(true);     // false
  • Number.isSafeInteger()
    Number.isSafeInteger() 인수로 전달된 숫자 값이 안전한 정수인지 검사하여 그 결과를 불리언 값으로 반환한다.
    안전한 정수값의 범위 : 안전한 정수(safe integer)란 IEEE 754 국제 표준에서 정의한 64비트 부동 소수점 수로 정확히 표현되는 정수. -(2의 53승 - 1)부터 (2의 53승 - 1)까지의 모든 정수 포함한다.
Number.isSafeInteger(10);                  // true
Number.isSafeInteger(Math.pow(2, 53) - 1); // true
Number.isSafeInteger(Math.pow(2, 53));     // false
Number.isSafeInteger(Infinity);            // false
Number.isSafeInteger(NaN);                 // false
Number.isSafeInteger(3.14);                // false

Number의 프로토타입 메소드❓❓
2021과 같은 원시 값(숫자)은 객체가 아니어서 속성과 메서드를 가질 수 없다. 그러나, JavaScript가 속성과 메서드에 액세스할 때는 원시 값을 객체로 간주한다.
또한, Number 인스턴스(≒객체)는 Number.prototype으로부터 메소드와 프로퍼티를 상속받는다. 이러한 특성들을 잘 생각해보면 아래의 Number.prototype.method()의 표현들이 이해가 될 것이다.

✨ Number.prototype.method()

  • .toExponential()
    이 메소드는 Number 인스턴스의(객체) 값을 지수 표기법으로 변환한 후, 그 값을 문자열로 반환. 이때 인수는 지수 표기법에서 소수 부분의 자릿수로 사용
    Ex) toExponential(2) : 소수점 아래 두번째 자리까지 표현
let num = 12.3456;       // Number 인스턴스를 생성함.
num.toExponential();     // 1.23456e+1
num.toExponential(2);    // 1.23e+1 
num.toExponential(4);    // 1.2346e+1


let num = new Number(2.534);
   console.log(num.toExponential()); // 2.534e+0(2.534의 지수표현, 문자열)

(25.34).toExPonential(); // 2.534e+1
(77.1234).toExPonential(4); // 7.7123e+1
  • toString()
    이 메소드는 Number 인스턴스의(객체) 값을 문자열로 반환한다. 인수에는 해당하는 진법의 수를 적는다. 인수의 진법으로 우선 값을 변환한 후, 그 값을 문자열로 반환한다. 인수를 생략하면 10진법이 지정된다
let num = 255;       // Number 인스턴스를 생성함.
num.toString();      // 255
num.toString(2);     // 11111111  (255의 2진법 표현, 문자열)


let num = new Number(10);
console.log(num.toString()); // 10 (문자열, 10진수)
console.log(num.toString(2)); // 1010 (문자열, 2진수)
console.log(num.toString(8)); // 12 (문자열, 8진수)


(10).toString(); // 10 (문자열, 10진수)
(16).toString(2); // 10000 (문자열, 2진수)
(16).toString(8); // 20 (문자열, 8진수)
  • .toFixed()
    숫자를 반올림하여 문자열로 반환. 인수로 반올림하는 소수점 이하 자리 수(0~20 지정 가능) 제한한다. 인수를 생략하면 기본 값 0이 지정된다
let num =  3.14159265;       // Number 인스턴스를 생성함.
num.toFixed();      // 3 
num.toString(2);     // 3.14  
num.toString(4);     // 3.1416  
3.14159265.toFixed(6); // 3.141593![]

Let num = new Number(1.2559165);
console.log(num.toFiexd()); // 1 
console.log(num.toFiexd(3)); //  1.256 
console.log(num.toString(4)); // 1.2559 

(12345.6788).toFixed(); // 12345
(12345.6788).toFixed(1); // 12345.7
(12345.6788).toFixed(3); // 12345.679
  • .toPrecision()
    인수로 전달받은 전체 자릿수까지 유효하도록 나머지 자릿수를 반올림하여 문자열로 반환한다. 인수를 전달받은 전체 자릿수로 표현할 수 없는 경우 지수 표기법으로 결과를 반환한다. 전체 자릿수를 나타내는 0~21 사이의 정수 값을 인수로 전달한다.
    인수를 생략하면 기본값이 0으로 지정된다
let num =  31415.9265;       // Number 인스턴스를 생성함.
<전체 6자릿수 유효, 나머지 반올림 >
num.toPrecision(6);      // 31415.9
<전체 2자릿수 유효, 나머지 반올림 : 표현이 불가해서 지수화>
num.toString(2);     // 3.1e+4 
<전체 4자릿수 유효, 나머지 반올림 : 표현이 불가해서 지수화>
num.toString(4);     // 3.142e+4

let num = new Number(31415.9265);
console.log(num.toPrecision()); // 31415.9265
console.log(num.toPrecision(4)); // 3.142e+4
console.log(num.toPrecision(7)); // 31415.93

(12345.6788).toPrecision()); // 12345.6788
(12345.6788). toPrecision(4)); // "1.235e+4" 
profile
♪(^∇^*) 워-후!!(^∀^*)ノシ

0개의 댓글