[JS-DSAA] 03 자바스크립트 숫자

백은진·2021년 5월 16일
0

책과 함께하는 공부

목록 보기
11/22

자바스크립트 숫자 연산

+ - / * %
(위의 연산들은 다른 프로그래밍에서도 일반적으로 사용된다.)

숫자체계

자바스크립트는 숫자에 대해 64비트 부동소수점 표현을 사용한다.

  • 부호 비트가 0이면 0또는 양수를 나타내고, 부호 비트가 1이면 음수를 나타낸다.

  • 지수부는 지수 값 e를 나타낸다.

  • 가수부는 분수 값을 나타낸다.

사람은 대게 십진수를 쉽게 이해한다. 때문에 이진수에 십진분수를 적용하면서 부동소수점 체계가 반올림 오류를 일으킬 수 있다.

오류 예)

자바스크립트에서 0.1 + 0.2 === 0.3은 false이다.

이진 표기법으로 십진수를 표현할 때 무한 개의 수가 필요할 때가 있다. 0.1을 계산하려 할 때 긴 나눗셈이 끝나지 않고 계속되어 무한 개의 수가 필요하게 된다. 무한 개의 수로 계산하는 것을 적당한 위치에서 중단하고 반올림 처리를 하여 십진수로 나타내므로, 정확한 계산이 이루어지지 않는 것이다.

자바스크립트 숫자 객체

위의 문제를 해결하는 데 도움이 되는 Number 객체의 내장 속성이 있다.

  • Math.floor(): returns the largest integer less than or equal to a given number.
  • Math.round(): returns the value of a number rounded to the nearest integer.
  • Math.ceil(): always rounds a number up to the next largest integer.

Number.EPSILON

The Number.EPSILON property represents the difference between 1 and the smallest floating point number greater than 1.

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

Number.MAX_SAFE_INTEGER

The Number.MAX_SAFE_INTEGER constant represents the maximum safe integer in JavaScript (253 - 1).

가장 큰 정수를 반환한다.

Number.MAX_VALUE

The Number.MAX_VALUE property represents the maximum numeric value representable in JavaScript.

Number.MIN_SAFE_INTEGER

The Number.MIN_SAFE_INTEGER constant represents the minimum safe integer in JavaScript (-(253 - 1)).

Number.MIN_VALUE

The Number.MIN_VALUE property represents the smallest positive numeric value representable in JavaScript.

Infinity

The global property Infinity is a numeric value representing infinity.

Number.POSITIVE_INFINITY

The Number.POSITIVE_INFINITY property represents the positive Infinity value.

Number.NEGATIVE_INFINITY

The Number.NEGATIVE_INFINITY property represents the negative Infinity value.

크기 순서

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

숫자 알고리즘

숫자가 소수인지 판단하는 알고리즘은 숫자와 관련하여 가장 많이 논의된 알고리즘 중 하나다.

소수 테스트

소인수분해

무작위 수 생성기


정리

  • 자바스크립트의 모든 숫자는 64비트 부동소수점 형태이다.
  • 가능한 가장 작은 부동소수점 증가를 얻기 위해서는 Number.EPSILON을 사용해야 한다.
  • 자바스크립트의 가장 큰 수와 가장 작은 수는 다음 등식과 같이 요약된다.

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

  • 소수 검증과 소인수분해는 암호화같은 다양한 컴퓨터 과학 적용 분야에서 사용된다.
profile
💡 Software Engineer - F.E

0개의 댓글