JS 숫자

Lee Dong Uk·2021년 7월 4일
0

프로그래밍 언어에서 숫자 연산 덕분에 숫자 값을 계산할 수 있다.
JS의 숫자 연산에는 다음과 같은 것들이 있다.

  • + : 덧셈
  • - : 뺄셈
  • / : 나눗셈
  • * : 곱셈
  • % : 나머지 연산

위의 연산자들은 다른 프로그래밍 언어에서도 일반적으로 사용되며 JS에 한정된 것은 아니다.

JS는 숫자에 대해 부호 (1비트), 지수(11비트), 소수(52비트) 총 64비트로 이루어진 부동소수점 표현을 사용한다. (JS가 모든 숫자를 나타낼 때 부동소수점을 사용한다... 정로도만 이해하자)

JS 숫자 객체

JS가 모든 숫자를 나타낼 때 부동소수점을 사용하기 떄문에 정수 나눗셈은 소용이 없다.

JAVA와 같은 프로그래밍 언어에서 정수 나눗셈의 결과는 해당 나누기의 몫이다.

	JAVA : 5/4 === 1
    JS   : 5/4 ===1.25

자바에서는 명시적으로 데이터 형식을 선언해야 하기 때문이다.
ex) int , float ...

따라서 결과는 부동 소수점이 될 수 없다.

정수 내림, 반올림, 올림

JS에서 정수 나눗셈을 하길 원한다면 다음 중 하나를 사용해야 한다.

Math.floor - 가장 가까운 정수로 내림한다.
Math.round - 가장 가까운 정수로 반올림한다.
Math.ceil  - 가장 가까운 정수로 올림한다.

Number.EPSILON

Number.EPSILON은 두 개의 표현 가능한 숫자 사이의 가장 작은 간격을 반환한다.
이는 부동소수점 근사치를 활용해 분수가 제대로 표현되지 않는 문제를 해결하는 데 유용하다.

function numberEquals(x,y){
	return Math.abs(x-y) < Number.EPSILON
 }
 
 numberEquals(0.1 + 0.2 ,0.3); true
 
 // JS에서는 십진분수로 인해 소수점 연산을 정확하게 표현할 수 없다.
 ex) 0.1+0.2 === 0.3 //false
     0.1+0.11 ===0.12 //false

최대치

Number.MAX_SAFE_INTEGER

Number.MAX_SAFE_INTEGER는 가장 큰 정수를 반환한다.

Number.MAX_SAFE_INTEGER+1 ===Number.MAX_SAFE_INTEGER + 2 //true

위의 코드에서 두 수는 더 이상 커질 수 없기 때문에 true를 반환한다.
하지만 위의 코드를 부동소수점과 같이 사ㅇㅇ하면 제대로 동작하지 않으면 결과는 false이다.

Number.MAX_SAFE_INTEGER +1.111 ===Number.MAX_SAFE_INTEGER +2.022 //false

Number.MAX_VALUE

Number.MAX_VALUE는 가능한 가장 큰 부동 소수점을 반환한다.

Number.MAX_VALUE는 1.7976931348623157e +308 라고한다
(뭔지는 모르겠다)

Number.MAX_VALUE +1 === Number.MAX_VALUE +2       //true
Number.MAX_VALUE +1.111 ===Number.MAX_VALUE+2.022 //true

Number.MAX_SAFE_INTEGER 와는 다르게 부동소수점에 대해서도 잘 동작한다.

최소치

Number.MIN_SAFE_INTEGER

Number.MIN_SAFE_INTEGER는 가장 작은 정수를 반환한다.

Number.MIN_SAFE_INTEGER는 -9007199254740991이다.

Number.MIN_SAFE_INTEGER -1 === Number.MIN_SAFE_INTEGER -2 //true

위의 코드에서 두 수가 더 이상 작아질 수 없기 때문에 true를 반환한다.
하지만 역시 부동소수점과 함께 사용하면 제대로 동작하지 않는다.

Number.MIN_VALUE

Number.MIN_VALUE는 JavaScript에서 표현할 수 있는, 0에 가장 가깝지만 음수는 아닌 수이다.
Number.MIN_VALUE는 5e-324 이다.

무한

Number.MAX_VALUE 보다 큰 유일한 것은 Infinity 이고 Number.MIN_SAFE_INTEGER보다 작은 유일한 것은 -Infinity이다.

크기 순서

-Infinity < Number.MIN_SAFE_INTERGER < 0 < Number.MIN_VALUE < Number.MAX_SAFE_INTEGER < Number.MAX_VALUE < Infinity 

위의 코드와 같이 JS 숫자의 크기를 가장 작은 것(왼쪽)부터 가장 큰 것(오른쪽) 순으로 요약했다.

0개의 댓글