Numbers

숫자 값은 일련의 숫자로 구성됩니다. 예를 들면 다음과 같습니다.

5

숫자 데이터 유형에는 숫자 데이터 유형을 나타내는 InfinityNaN(값 의미)와 같은 숫자 개념을 나타냅니다. "숫자가 아닙니다." 데이터 애널리스트가 될 수 있는 계산하지 않습니다.

숫자 객체

값이 Number() 함수에 전달되면 그 값은 해당 숫자입니다. 예를 들어 숫자 문자열은 숫자 프리미티브:

Number( "10" );
> 10

false 또는 null 값을 Number()에 전달하면 0이 반환되고 true는 반환됩니다. 1

Number( null );
> 0

Number( false );
> 0

Number( true );
> 1`

undefined 또는 문자열의 경우와 같이 값을 변환할 수 없는 경우 숫자가 아닌 문자가 포함된 경우 Number 함수는 NaN을 반환합니다.

Number( undefined );
> NaN

Number( "The number 3." );
> NaN

프로토타입 상속에 자세히 설명되어 있듯이 Number 객체를 숫자 리터럴 대신 Number 객체를 만들기 때문입니다.

let numObject = new Number( 15 );

numObject;
> Number { 15 }

이 객체는 수학 연산에서 할당된 값으로 작동하지만 숫자 리터럴과 엄격한 동등 비교에 실패함 일치하지 않는데, 리터럴 값에 비해 실질적인 이점을 제공하지 않는 것입니다.

let tenObject = new Number( 10 );

tenObject + 5;
> 15

tenObject === 10;
> false

부동 소수점 수 및 정수

JavaScript에는 숫자 유형 1개만 있습니다(64비트 IEEE 754-1985 배정밀도). 부동 소수점 수 사이의 -2^10242^1024. JavaScript가 메모리에 숫자를 저장하기 전에 해당 숫자를 부동 소수점 수라고도 하는 이진 부동 소수점 수로 변환합니다.

이 64비트 저장소 (양 또는 음의 "부호" 비트 하나, 지수, 분수의 경우 52비트)을 사용하면 모든 숫자에서 정밀도 오류가 발생할 수 있습니다. 자릿수의 개수입니다. 이러한 한계는 자바스크립트의 숫자 데이터 유형으로 변경되었습니다.

0.1 + 0.7
> 0.7999999999999999

숫자 값은 대신 부동 소수점 수인 정수로 저장할 수 있습니다. -(2^53 − 1)2^53 − 1 사이의 분수가 없는 값입니다. 플로팅하고 정수는 기본적으로 동일한 방식으로 저장되며 실질적인 차이는 없습니다. 매우 중요하다고 생각합니다 하지만 정밀도 오류를 피할 수 있습니다.

숫자 연산자

숫자 프리미티브와 함께 표준 수학 연산자를 사용하면 수학적 연산 순서 적용: 괄호로 묶인 모든 표현식이 먼저 평가되고 지수, 곱하기, 나누기, 덧셈, 뺄셈.

연산자 이름 설명 사용 결과
+ 추가 2+2 4
- 뺄셈 4-2 2
* 곱하기 2*5 10
/ 나눗셈 10/5 2
++ 델타 숫자에 1을 더합니다. 2++ 3
-- 줄이기 숫자에서 1을 뺍니다. 3-- 2
** 지수 첫 번째
를 올린 결과를 반환합니다. 두 번째 피연산자의 지수에 대한 피연산자입니다.
2**4 16
% 나머지
실행 시 남은 나머지를 반환합니다. 첫 번째 피연산자를 두 번째 피연산자로 나눔
12%5 2

또한 수학 대입 연산자를 사용하여 연산을 실행하고 즉시 해당 값을 값을 변수에 추가합니다.

연산자 이름 사용
+= 추가 할당 myValue += 2
-= 뺄셈 할당 myValue -= 2
*= 곱하기 할당 myValue *= 2
/= 부서 배정 myValue /= 2
**= 지수 할당 myValue **= 2
%= 나머지 할당 myValue %= 2

기호화된 값

숫자 프리미티브는 '숫자가 아님'과 같은 몇 가지 특수한 사례에도 적용됩니다. 값 (NaN) 및 양수가 될 수 있는 무한대를 나타내는 값 (Infinity) 또는 제외 (-Infinity)입니다.

0으로 나누기의 결과로 Infinity이 발생하는 경우가 드물게 발생할 수 있습니다. 이 경우 대부분의 프로그래밍 언어에서 대신 오류가 발생합니다.

10 / 0
> Infinity

JavaScript는 대소문자를 구분합니다. Infinity은 숫자 데이터 유형입니다. 무한대의 개념을 나타내지만 infinity에는 특별한 의미가 없습니다.

Infinity
> Infinity

infinity
> Uncaught ReferenceError: infinity is not defined

NaN('숫자 아님' 의미) 더 자주 표시되며 이는 산술 연산의 결과가 숫자로 표현할 수 없습니다 예를 들어 JavaScript는 숫자만 포함하는 문자열 리터럴은 다음과 같이 수학 연산에 사용됩니다.

"2" * 2;
> 4

하지만 해당 문자열을 숫자 값으로 파싱할 수 없는 경우 연산 결과는 숫자가 아닙니다.

"two" * 2;
> NaN

NaN는 잘못된 값이 숫자로 표시되는 모든 경우에 반환됩니다. 공식을 사용합니다. 예를 들면 다음과 같습니다.

  • 숫자 변환 실패 (예: parseInt( undefined ))
  • 결과가 실수가 아닌 산술 연산 (예: 0 / 0, Math.sqrt( -10 ))
  • 확정된 결과가 없는 산술 연산 (0 * Infinity)
  • 명시적 NaN (NaN + 2) 또는 결과 NaN개 (2 * "string" / 2)

이해도 확인

falseNumber()에 전달한 결과는 무엇인가요?

0
거짓
NaN
1

다음 수학 연산의 결과는 무엇인가요?

"Six" * 3

NaN
2
18
0