[Javascript] Number

Suyeon·2020년 8월 25일
1

Javascript

목록 보기
7/31
  • Javascript에서 일반적인 숫자는 253 이상이거나 -253 이하일 수 없음
  • 253이거나 -253이하인 경우에는 bigInt를 사용함

"0"이 많은 경우

let billion = 1000000000;
let billion = 1e9;  // The same

let ms = 0.000001;
let ms = 1e-6; 

Number to String

  • toString()
let num = 255;
num.toString(); // "255"

// 숫자에 바로 toString()을 호출
alert( 255..toString() ); // "255"

✔️ Base

  • base=10 (Default)
  • base=16 (hexadecimal) 문자 인코딩 등을 표현할 때 사용함. 숫자는 0부터 9, 10 이상의 수는 A부터 F를 사용하여 나타냄.
  • base=2 (binary) 비트 연산 디버깅에 주로 쓰임. 숫자는 0 또는 1이 될 수 있음.
  • base=36 사용할 수 있는 base 중 최댓값. 0..9와 A..Z를 사용해 숫자를 표현함

String to Number

  • unary plus(+)
  • Number()
  • parseInt / parseFloat
// (+) and Number is strict
alert( +"100px" ); // NaN
alert(Number("100px")); // NaN

// parseInt and parseFloat
alert( parseInt('100px') ); // 100
alert( parseInt('12.3') ); // 12
alert( parseFloat('12.3.4') ); // 12.3

Rounding

// 1.2345 -> 1.23
let num = 1.2345;

// (*) Multiply-and-divide
Math.floor(num * 100) / 100;

// (**) toFixed(n)
// Rounds up or down to the nearest value like Math.round()
// Its result of toFixed is a string, if you want number, use "Number()" call or "+num.toFixed(n)".
num.toFixed(2); 
num.toFixed(5); // 1.23450

Other math functions

alert( Math.random() );
alert( Math.max(3, 5, -10, 0, 1) ); // 5
alert( Math.min(1, 2) ); // 1
alert( Math.pow(2, 10) ); // 2 in power 10 = 1024

// isNaN: return true if its argument is not a number
alert( isNaN(25) ); // false
alert( isNaN("str") ); // true

// isFinite: converts its argument to a number and returns true if it’s a regular number
alert( isFinite("25") ); // true
alert( isFinite("str") ); // false

Imprecise calculations

alert( 0.1 + 0.2 == 0.3 ); // false
alert( 0.1 + 0.2 ); // 0.30000000000000004
  • 숫자는 이진법으로 메모리에 저장되기 때문에, 십진법에서는 쉽게 가능한 0.1이 이진법 에서는 unending fractions이 되어버린다.
  • 예를 들면, 십진법에서는 1/10 은 0.1이지만, 1/3은 0.33333(3)이 된다. 반대로 이진법에서는 2의 배수은 정확하게 연산가능하지만 1/10은 endless binary fraction이 되어버린다.

✔️ How to solve

// (*) toFixed(n)
let sum = 0.1 + 0.2;
alert( sum.toFixed(2) ); // 0.30
alert( +sum.toFixed(2) ); // 0.3, Unary plus
profile
Hello World.

0개의 댓글