56일차 - 숫자형, 소수점

김민찬·2021년 7월 4일
0

취업으로의 여정

목록 보기
57/196

주말을 맞이해서 JS 복습을 하다가 숫자에서 e와 2, 8, 16 진수 그리고 소수점 N-th자리 구하기를 정리해보겠다.

e

자바스크립트에서 아주 큰 숫자를 넣거나 소수점이 큰 숫자를 넣을때 0을 줄일 수 있는 방법이 e를 사용하는 것이다.

1e3 // 1000
3.2e3 // 3200
10.3e4 // 103000

예시와 같이 숫자 뒤에 e를 넣고 뒤에 넣고 싶은 0의 갯수를 e뒤에 넣으면 된다.

소수로 활용하고 싶을때는 e-뒤에 임의의 숫자 n을 넣으면 n만큼 소수점이 왼쪽으로 이동한다.

아래 예시처럼 활용할 수 있다.

3e-2 // 0.03
1.3e-3 // 0.0013
19.3e-4 // 0.00193

2, 8, 16 진수

진수를 사용할 것이라고 자바스크립트로 명시하는 방법은 각각

  • 2진수는 숫자앞에 "0b" 를 붙인다.
  • 8진수는 숫자앞에 "0o" 를 붙인다.
  • 16진수는 숫자앞에 "0x" 를 붙인다.

100을 2, 8, 16 순서대로 표현하는 방법을 아래 예시로 작성해 보겠다.

0b1100100 // 2진수로 100을 표현하는 법
0o144 // 8진수로 100을 표현하는 법
0x64 // 16진수로 100을 표현하는 법

반대로 임의의 num 이라는 숫자를 16진수 표현하는 방법을 알고 싶을때는 toString()메서드를 사용하면 된다.

아래 예시는 255을 16진수로 표현할때의 값을 알아내는 방법이다.

let num = 255;
num.toString(16); // "ff"

여기서 유의해야할 점은 string형태로 출력된다는 것이다.

소숫점 N-th까지 구하기

자바스크립트에서 숫자는 64비트형으로 표현하며, 52비트는 숫자를 저장하는 데 사용되고, 11비트는 소수점 위치를, 1비트는 부호를 저장하는데 사용된다.

그래서 숫자가 너무 커지거나 소수점이 왼쪽으로 너무 많이 이동하면, 정밀도 손실이 일어난다.

console.log(9999999999999999999); // 10000000000000000000

console.log(0.1 + 0.2) // 0.30000000000000004

이렇게 사람의 상식으로는 이해할 수 없는 일이 일어나기도 한다.

그래서 0.1+0.2를 정확하게 표현하고 싶으면 num.toFixed(n)를 이용하면 된다.

num.toFixed(n)은 num를 n 번째 소수까지 '문자열'로 출력한다.

let num = 0.1 + 0.2 // 0.30000000000000004
num.toFixed(2) // "0.30"
+num.toFixed(2) // 0.3 숫자형으로 변환하고 싶다면 +를 앞에 넣어라
profile
두려움 없이

0개의 댓글