본문 바로가기
JavaScript

숫자(Number)와 관련된 연산자

by chanfficial 2023. 3. 5.

1. 숫자 자료형으로 표현되는 것

 

(1) 양과 음의 정수와 실수

// 자바스크립트에는 정수와 실수의 자료형이 따로 있지 않음
let integer = 100;
let real = 1.234;
let negative = -5.67;

console.log(
  typeof integer,
  typeof real,
  typeof negative
); // number number number

 

(2) 무한대

let x = 1 / 0;

console.log(x, typeof x); // Infinity 'number'

// 무한대에는 양음이 있음
console.log(-x, typeof -x); // -Infinity 'number'
let y = -1 / 0;

console.log(y, typeof y); // -Infinity 'number'
let z = Infinity;
console.log(z, typeof z); // Infinity 'number'

 

(3) 숫자가 아닌 것 (Not a Number)

let x = 1 / 'abc';
let y = 2 * '가나다';
let z = NaN;

console.log(x, typeof x); // NaN 'number'
console.log(y, typeof y); // NaN 'number'
console.log(z, typeof z); // NaN 'number'

- 숫자가 아닌 것도 자료형은 number 로 출력됨

// NaN은 양음이 없음
console.log(-NaN); // NaN

 

⭐️ 주어진 값이 NaN인지 여부 확인하는 방법

let x = 1 / 'abc';

console.log(
  x,
  x == NaN, // 이 두 가지 방법으로는
  x === NaN, // NaN 인지 알 수 없음
  isNaN(x), // 숫자가 아닐 시 true
  Number.isNaN(x) // 보다 엄격한 버전
);

- isNaN(), Number.isNaN() 를 사용하여 주어진 값의 NaN 여부를 확인할 수 있음

 

★ isNaN 과 Number.isNaN 의 차이

기능 ( 메서드 ) 설명
isNaN 숫자가 아니다 싶으면 무조건 true 반환
Number.isNaN 무조건 숫자가 아니어야만 true 반환
console.log(
  typeof '1', isNaN('1'), Number.isNaN('1')
); // 특정 숫자로 변환 가능한 문자
// string false false
console.log(
  typeof true, isNaN(true), Number.isNaN(true)
); // true는 1, false는 0으로 변환됨
// boolean false false
console.log(
  typeof 'a', isNaN('a'), Number.isNaN('a')
); // ⚠️ 특정 숫자로 변환 불가인 문자의 경우 차이
// string true false
console.log(
  typeof (1/'a'), isNaN(1/'a'), Number.isNaN(1/'a')
); // NaN값인 경우
// number true true

2. 연산자

 

(1) 산술 연산자

 

① 이항 산술 연산자

  • +, -, *, /, %, **
  • 셈의 결과를 반환
  • 부수효과 없음
// 값 반환
let x = 10;
let y = x * 10;

console.log(y); // 100
console.log(
  y + 1, // 덧샘
  y - 1, // 뺄셈
  y * 2, // 곱셈
  y / 5, // 나눗셈
  y % 3,  // 나머지
  y ** 2 // 제곱
); // 101 99 200 20 1 10000

// 부수효과 없음
console.log(y); // 100
// 널리 사용되는 홀수와 짝수의 판별법
console.log(
  '홀수 ',
  123 % 2,
  55 % 2,
  999 % 2
); // 홀수  1 1 1

console.log(
  '짝수 ',
  2 % 2,
  100 % 2,
  8 % 2
); // 짝수  0 0 0

 

💡 괄호의 사용

console.log(
  4 * 1 + 2,
  4 * (1 + 2),
  4 * -(1 + 2),
  -(4 * -(1 + 2))
); // 6 12 -12 12

 

② 단항 산술 연산자

연산자 반환 부수효과
a++ 값 그대로 1 증가
++a 1 증가한 값 1 증가
a-- 값 그대로 1 감소
--a 1 감소한 값 1 감소
+a 값 그대로 없음
-a 양음을 반전한 값 없음

 

let x = 10;

// 값을 반환부터 하고 증가
console.log('1.', x++, x); // 1. 10 11

// 값을 증가부터 하고 반환
console.log('2.', ++x, x); // 2. 12 12
let x = 3;
let y = 4;

// 💡 부수효과가 일어나는 시점
console.log(x-- * --y, x, y); // 9 2 3
let x = 1;

console.log(
  +x,
  -x,
  -(-x),
  -(x++),
  -x * -1
); // 1 -1 1 -1 2

 

💡 문자열을 숫자로 바꿈

console.log(
  +'100',
  -'100',
  +'abc' // 숫자로 변환될 수 없는 문자열
); // 100 -100 NaN
let x = '100';
let y = '100';

console.log(x++, x); // 100 101
console.log(--y, y); // 99 99

 

숫자로 변환될 수 없는 문자열

// 첫 번째 값 주의 - 증가 이전에도 변환
let z = 'abc';
console.log(z++, z); // NaN NaN

(2) 할당 산술 연산자(부수효과 있음)

연산자 의미
x += y x = x + y
x -= y x = x - y
x *= y x = x * y
x /= y x = x / y
x %= y x = x % y
x **= y x = x ** y

 

let x = 3;

x += 2;
console.log(x); // 5

x -= 3;
console.log(x); // 2

x *= 12;
console.log(x); // 24

x /= 3;
console.log(x); // 8

x %= 5;
console.log(x); // 3

x **= 4;
console.log(x) // 81
let y = 25;

console.log(
  y **= 0.5, // 할당된 결과 반환
  y
); // 5 5

 

 

정리참조

https://www.yalco.kr/@javascript/2-5/

 

'JavaScript' 카테고리의 다른 글

그 외의 연산자들  (0) 2023.03.05
불리언(boolean)과 관련 연산자  (0) 2023.03.05
문자열에 사용되는 연산자  (0) 2023.03.03
문자열(string) - 텍스트 데이터  (0) 2023.03.01
자료형과 정적 / 동적 타입  (0) 2023.03.01