숫자 값은 일련의 숫자로 구성됩니다. 예를 들면 다음과 같습니다.
5
숫자 데이터 유형에는 숫자 데이터 유형을 나타내는
Infinity
및 NaN
(값 의미)와 같은 숫자 개념을 나타냅니다.
"숫자가 아닙니다." 데이터 애널리스트가 될 수 있는
계산하지 않습니다.
숫자 객체
값이 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^1024
및 2^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
)
이해도 확인
false
를 Number()
에 전달한 결과는 무엇인가요?
다음 수학 연산의 결과는 무엇인가요?
"Six" * 3