[코드잇 스프린트 3기] Pre-course - 자료형 심화1. 숫자

YUYONI·2023년 10월 28일
0
post-thumbnail

숫자 표기법

그냥 적는 것 외에도 지수 표기법이나 n진법을 이용한 표기 등을 사용할 수 있음

  1. 지수 표기법
let millionare = 1000000000;
let myNumber = 1e9; // 지수 표기법

console.log(millionare); // 1000000000
console.log(myNumber);  // 1000000000
console.log(millionare === myNumber);  // true
  1. 16진법 (Hexadecimal), 8진법 (Octal), 2진법 (binary numeral system)
let hex1 = 0xff;  // 255
let hex2 = 0xFF;  // 255

let octal = 0o377;  // 255

let binary = 0b11111111; // 255

console.log(hex1); // 255
console.log(hex2); // 255
console.log(octal); // 255
console.log(binary); // 255

toFixed(n)

파라미터로 숫자값을 전달해주면 그만큼 소수점 아래 자릿수를 고정해줌 범위는 1부터 100
즉 3을 넣으면 소수점 4번째 자리를 반올림해서 3번째 까지 표기해줌
만약 소수점 자리를 초과하게 되면 자리가 0으로 채워짐

let myNumber = 0.3591;

//toFixed(0~100)
console.log(myNumber.toFixed(3)); // 0.359
console.log(myNumber.toFixed(7)); // 0.3591000

주의해야할 점! toFixed를 사용하면 자료형이 string이 됨!
그래서 +연산 할 경우 그냥 문자열 연결이 되므로 숫자로서 이용하고 싶다면 Number()를 통해 다시 숫자형으로 바꿔줘야함
또는 앞에 그냥 +를 붙여주면 숫자형으로 바뀜!

console.log(typeof myNumber.toFixed(3)); // string
console.log(typeof +myNumber.toFixed(3)); // Number

toString(n)

n진법으로 변환하는 메서드. 범위는 2부터 36

let myNumber = 255;

console.log(myNumber.toString(2));  // 11111111
console.log(myNumber.toString(8));  // 377
console.log(myNumber.toString(16));  // ff

이것 또한 사용하면 자료형이 string이 됨!

점 표기법?

만약 위와 같이 변수에 담아서 사용하지 않고 숫자에 바로 사용한다면 점 표기법을 사용할 수 없음. 소수점이랑 혼동오기 때문

그래서 숫자에 바로 사용하려면 반드시 점을 두개 찍어주거나, 괄호에 담아서 사용해야함!

255.toString(2); // error
255..toString(2); // 11111111
(255).toString(2); // 11111111

Math 객체

Date객체처럼 자바스크립트의 내장 객체 중 다양한 연산들을 유용하게 사용하기 위해 Math라는 객체가 있음

- Math.abs(x) : 절댓값 (Absolute Number)

console.log(Math.abs(-10)); // 10
console.log(Math.abs(10)); // 10

- Math.max(x) : 최댓값 (Maximum)

Math.max 함수에 파라미터로 여러 수를 넘겨주면, 그중 가장 큰 값이 리턴됨

console.log(Math.max(2, -1, 4, 5, 0)); // 5

- Math.min(x) : 최솟값 (Minimum)

Math.min 함수에 파라미터로 여러 수를 넘겨주면, 그중 가장 큰 값이 리턴됨

console.log(Math.min(2, -1, 4, 5, 0)); // -1

- Math.pow(x, y) : 거듭제곱 (Exponentiation)

x의 y승이 리턴됨

console.log(Math.pow(2, 3));  // 8

- Math.round(x) : 제곱근 (Square Root)

x의 제곱근이 리턴됨

console.log(Math.round(2.4)); // 2
console.log(Math.round(2.5)); // 3

- Math.floor(x), Math.ceil(x) : 버림과 올림 (Floor and Ceil)

floor는 버림, ceil은 올림

console.log(Math.floor(2.8));  // 2
console.log(Math.ceil(2.4));  // 3

- Math.random : 난수 (Random)

0 이상 1 미만의 값이 랜덤으로 리턴

console.log(Math.random()); // 0.07746312983526682
console.log(Math.random()); // 0.05747007039776353

- Math.PI : 파이

원의 둘레와 지름의 비율(약 3.141592)이 리턴됨

console.log(Math.PI); // 3.141592653589793	

'삼각 함수 계산'이나 '로그'같은 더 깊은 수학 계산도 가능

- Math.sign(x) : 부호

x가 양의 수인지 음의 수인지 나타내는 부호를 반환. 음수면 -1, 양수면 1, 0이면 0 반환

console.log(Math.sign(-231)); // -1
console.log(Math.sign(0)); // 0
console.log(Math.sign(11)); // 1

- Math.trunc(x) : 정수부 반환

console.log(Math.trunc(233.2323)); // 233

✨ 프로그래밍 언어의 오류?

0.1 + 0.2와 같은 단순한 계산을 맡겼을 때 반환값이 0.3이 아닌 0.3000000004와 같은 0.3에 근접하는 값을 반환함
이는 컴퓨터가 우리와 다르게 모든 코드를 2진수 즉 0과 1로 바꿔서 계산하기 때문에 0.1과 같은 숫자도 2진수로 변환하다보면 무한소수가 되는 경우가 발생하고, 자바스크립트가 표현할 수 있는 숫자범위 내에서 반올림하게 되어 이런 경우가 발생함

그래서 이런 문제를 해결하기 위해 toFixed를 이용해 1번째까지 표시해서 숫자형으로 바꿔 사용하거나 필요한 만큼 10의 n승을 곱해서 반올림한 후 다시 10의 n승으로 나눠주는 등의 방법을 씀!

profile
기본기와 원리, 개념 철처하게 다지기!

0개의 댓글