English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
JavaScript는 하나의 숫자 타입만 있으며, 정수와 부동소수점 숫자를 별도로 지정하지 않습니다.
따라서, 숫자는 JavaScript에서 소수점을 포함하거나 포함하지 않고도 작성할 수 있습니다.
var a = 25; // 소수점이 없습니다 var b = 80.05; // 소수점이 있습니다테스트를 보세요‹/›
위 두 가지 경우에서 데이터 타입은 모두 숫자이며, 숫자가 소수점을 가지고 있거나 없이도 동일합니다.
JavaScript에서 과학적 지수 표기법을 사용하여 매우 크거나 작은 숫자를 약화할 수 있습니다. 다음 예제와 같이 표시할 수 있습니다:
let num1 = 957e8; // 95700000000 let num2 = 957e-8;// 0.00000957테스트를 보세요‹/›
JavaScript의 숫자는 정확하게 간주되며,최대15비트 숫자16비트 후 네 번째에서 반올림합니다:
let num1 = 999999999999999; // 값이 유지됩니다 999999999999999 let num2 = 9999999999999999;// 올림하여 10000000000000000테스트를 보세요‹/›
다른 언어와 달리 JavaScript는 정수,단정수,장정수,부동소수점 등 다른 유형의 숫자를 정의하지 않습니다.
JavaScript 숫자는64비트 정밀도,이는 더블 정밀도라고도 합니다.
내부 표현은 IEEE 기반 754기준
64비트는 숫자의 기호, 지수와 소수점 사이에 배분됩니다. 예를 들어:
識別 | 지수 | 소수점 |
---|---|---|
1 bit | 11 bit | 52 bit |
비트 63 | 비트 62–52 | 비트 51–0 |
이전 장에서 알 수 있듯이,+연산자는 숫자를 더하고 문자열을 연결하는 데 사용됩니다.
숫자라면 숫자를 더합니다. 문자열이면 문자열을 연결합니다.
두 숫자를 더하면 결과는 숫자가 됩니다:
let x = 50; let y = 10; let z = x + y; // z = 60 (숫자)테스트를 보세요‹/›
두 문자열이면 결과는 문자열 연결됩니다:
let x = "50"; let y = "10"; let z = x + y; // z = 5010 (문자열)테스트를 보세요‹/›
숫자와 문자열을 결합하면 결과는 문자열 연결됩니다:
let x = 50; let y = "10"; let z = x + y; // z = 5010 (문자열)테스트를 보세요‹/›
문자열과 숫자를 결합하면 결과는 문자열 연결됩니다:
let x = "50"; let y = 10; let z = x + y; // z = 5010 (문자열)테스트를 보세요‹/›
JavaScript는 표현식을 왼쪽에서 오른쪽으로 계산합니다. 다른 시퀀스는 다른 결과를 낳을 수 있습니다.
아래의 예제에서 먼저50 + 10x와 y가 모두 숫자이므로 더하고, 그런 다음60 +"30"을 연결해야 합니다,because z는 문자열입니다:
let x = 50; let y = 10; let z = "30"; let sum = x + y + z; // sum = 6030 (문자열)테스트를 보세요‹/›
일반적인 오류, 예상한 결과는60:
let x = 50; let y = 10; let z = "The sum is: " + x + y;테스트를 보세요‹/›
제가 제시한 문제를 해결할 수 있는 방법은 괄호를 사용하는 것입니다:
let x = 50; let y = 10; let z = "The sum is: " + (x + y);테스트를 보세요‹/›
JavaScript 문자열은 숫자 값을 포함할 수 있습니다.
let x = 50; // x 은 숫자입니다 let y = "50"; // y 은 문자열입니다
문자열이 숫자 값을 포함하면 JavaScript에서 수학 표현식을 수행할 수 있습니다.
除셈 수행할 수 있습니다:
let x = "50" / "10"; // x = 5테스트를 보세요‹/›
곱셈 수행할 수 있습니다:
let x = "50" * "10"; // x = 500테스트를 보세요‹/›
평만 수행할 수 있습니다:
let x = "5" ** "3"; // x = 125테스트를 보세요‹/›
증가량 수행할 수 있습니다:
let x = "50"; x++; // x = 51테스트를 보세요‹/›
뺄셈 수행할 수 있습니다:
let x = "50" - "10"; // x = 40테스트를 보세요‹/›
덧셈 수행할 수 없습니다:
let x = "50" + "10"; // x = 5010테스트를 보세요‹/›
주의:두 문자열을 추가하면 결과는 문자열 연결됩니다.
JavaScript의 NaN에서는, 예약어는 숫자가 유효한 숫자가 아님을 나타냅니다.
숫자와 비숫자 값을 수학 연산에 대해 시도하면 NaN이 반환됩니다。
var x = 50 / "oldtoolbag.com"; // x = NaN (Not a Number)테스트를 보세요‹/›
하지만, 문자열이 숫자 값을 포함하고 있으면 JavaScript로 수학 표현식을 실행할 수 있습니다:
var x = 50 / "10"; // x = 5테스트를 보세요‹/›
전역 JavaScript isNaN()함수를 사용하여 값이 숫자인지 확인할 수 있습니다:
var x = 50 / "oldtoolbag.com"; isNaN(x);// true를 반환합니다. 왜냐하면 x는 숫자가 아닙니다테스트를 보세요‹/›
NaN으로 사용된 변수에 값이 할당되면, 다른 연산자가 유효한 숫자라도 이를 유발할 수 있습니다:
var x = NaN; var y = 27; var z = x + y; // z = NaN테스트를 보세요‹/›
NaN은 숫자입니다;typeof NaN은 number를 반환합니다:
typeof NaN; // will return "number"테스트를 보세요‹/›
Infinity(정의 무한) 또는-Infinity(부정의 무한) JavaScript에서 사용할 수 있는 최대 숫자를 초과한 숫자를 계산하면 반환됩니다.
정의되지 않은 값에 대해서도 이러한 상황이 발생합니다. 예를 들어 0으로 나누는 경우:
var x = 5 / 0; // 무한을 반환합니다 var y = -5 / 0; // 부정의 무한을 반환합니다테스트를 보세요‹/›
기술적 표현으로는,Infinity(정의 무한) 숫자가 number를 초과하면 표시됩니다1.797693134862315E+308,그것은 JavaScript의 상한을 나타냅니다.
동일하게-Infinity(부정의 무한) 숫자가 하한을 초과하면 표시됩니다-1.797693134862316E+308。
Infinity는 숫자입니다:typeof Infinity는 number를 반환합니다:
typeof Infinity; // will return "number"테스트를 보세요‹/›
این عدد Infinity도 반복문에서 사용될 수 있습니다:
var num = 5; while (num != Infinity) { // 여기의 코드는 num = ∞까지 실행됩니다 }테스트를 보세요‹/›
기본적으로 JavaScript는 숫자를10는기본의소수점
),16진수(기본16),이진수(기본2)와 8진수(기본8)를 나타냅니다.
16진수는 0x로 접두사가 있습니다:
var x = 0xFF; // x = 255테스트를 보세요‹/›
이진수는 0b로 접두사가 있습니다:
var x = 0b1111;// x = 15테스트를 보세요‹/›
0으로 시작하는 숫자를 쓰지 마세요(예를 들어 0121)。숫자를 전导부0으로 작성하면 JavaScript는 숫자를 8진수로 해석합니다:
var x = 016;테스트를 보세요‹/›
이를 사용할 수 있습니다.toString()메서드는2부터36의 숫자를 숫자로 반환합니다.
16진수로는기본수16십진수로는기본수10오ctal로는기본수8이진수로는기본수2。
var num = 255; num.toString(10); // returns 255 num.toString(16); // returns ff num.toString(8); // returns 377 num.toString(2); // returns 11111111테스트를 보세요‹/›
일반적으로, JavaScript 숫자는 텍스트로 생성된 원시 값입니다:
var num = 50;
하지만, new 키워드를 사용하여 숫자를 객체로 정의할 수도 있습니다:
var num = new Number(50);
두 가지 차이를 테스트하기 위해, 숫자 원시 값을 숫자 객체로 초기화하겠습니다.
var num1 = 50; var num2 = new Number(50); typeof num1// returns number typeof num2// returns object테스트를 보세요‹/›
주의:숫자를 객체로 생성하지 마십시오. 이는 성능을 저하시키고 예상치 못한 결과를 초래할 수 있습니다.
== 연산자를 사용할 때, 숫자는 다음과 같습니다:
var num1 = 50; var num2 = new Number(50); document.write(num1 == num2); // true를 반환합니다. 왜냐하면 num1와 num2같은 값을 가지고 있습니다테스트를 보세요‹/›
=== 연산자를 사용할 때, 같은 숫자는 다릅니다. 왜냐하면 === 연산자는 값과 타입을 모두 기대합니다:
var num1 = 50; var num2 = new Number(50); document.write(num1 === num2); // false를 반환합니다. 왜냐하면 num1와 num2다른 타입을 가지고 있습니다테스트를 보세요‹/›
객체를 비교할 수 없습니다:
var num1 = new Number(50); var num2 = new Number(50); document.write(num1 == num2); // false를 반환합니다. 왜냐하면 num1와 num2다른 객체입니다 document.write(num1 === num2); // false를 반환합니다. 왜냐하면 num1와 num2다른 객체입니다테스트를 보세요‹/›
주의하십시오(==)와(===)의 차이점。JavaScript 객체를 비교할 때는 항상 false를 반환합니다。