JavaScript 숫자
- 이전 페이지 JS 문자열 템플릿
- 다음 페이지 JS BigInt
JavaScript에는 하나의 숫자 타입만 있습니다.
숫자를 쓸 때 소수점을 포함할 수도 있고 포함하지 않을 수도 있습니다.
JavaScript 숫자
JavaScript 숫자는 소수점을 포함하여 쓸 수도 있고, 포함하지 않을 수도 있습니다:
예제
var x = 3.14; // 소수점 있는 숫자 var y = 3; // 소수점 없는 숫자
매우 크거나 매우 작은 수는 과학적 표기법으로 쓸 수 있습니다:
예제
var x = 123e5; // 12300000 var y = 123e-5; // 0.00123
JavaScript 수치는 항상 64비트 부동소수점입니다
대부분의 다른 프로그래밍 언어와 달리, JavaScript는 정수, 짧은 정수, 긴 정수, 부동소수점 등 다른 수 유형을 정의하지 않습니다.
JavaScript 수치는 항상 더블 프리미엄 부동소수점으로 저장되며, 국제 IEEE 754 표준에 따릅니다.
이 형식은 64비트로 수치를 저장하며, 0에서 51까지는 숫자(부분)를 저장하고, 52에서 62까지는 지수를 저장하고, 63비트는 시그너를 저장합니다:
값(소수점 또는 분수) | 지수 | 시그너 |
---|---|---|
52 비트(0 - 51) | 11 비트 (52 - 62) | 1 비트 (63) |
정밀도
소수점이 없는 정수(지수나 과학적 표기법을 사용하지 않음)는 15자리 정확합니다.
예제
var x = 999999999999999; // x는 999999999999999이 될 것입니다; var y = 9999999999999999; // y는 10000000000000000이 될 것입니다;
소수점의 최대 수는 17자리입니다만, 부동소수점의 수학은 항상 100% 정확하지 않습니다:
예제
var x = 0.2 + 0.1; // x는 0.30000000000000004이 될 것입니다;
위 문제를 해결하는 데 도움이 되는 곱셈과 나눗셈을 사용하세요:
예제
var x = (0.2 * 10 + 0.1 * 10) / 10; // x는 0.3이 될 것입니다;
숫자와 문자열을 더하는 경우
경고!!
JavaScript의 덧셈과 연결(연결)은 모두 + 연산자를 사용합니다.
숫자는 덧셈을 사용합니다. 문자열은 연결을 사용합니다.
두 숫자를 더하면 숫자가 됩니다:
예제
var x = 10; var y = 20; var z = x + y; // z는 30(수)이 될 것입니다;
두 문자열을 더하면 문자열 연결이 됩니다:
예제
var x = "10"; var y = "20"; var z = x + y; // z는 1020(문자열)이 될 것
숫자와 문자열을 더하면 결과도 문자열 연결됩니다:
예제
var x = 10; var y = "20"; var z = x + y; // z는 1020(문자열)이 될 것입니다;
如果您对一个字符串和一个数字相加,结果也是字符串级联:
예제
var x = "10"; var y = 20; var z = x + y; // z는 1020(문자열)이 될 것
常见的错误是认为结果应该是 30:
예제
var x = 10; var y = 20; var z = "The result is: " + x + y;
常见的错误是认为结果应该是 102030:
예제
var x = 10; var y = 20; var z = "30"; var result = x + y + z;
JavaScript 从左向右进行编译。
因为 x 和 y 都是数,10 + 20 将被相加。
因为 z 是字符串,30 + "30" 被级联。
数字字符串
JavaScript 字符串可以拥有数字内容:
var x = 100; // x는 숫자 var y = "100"; // y는 문자열
在所有数字运算中,JavaScript 会尝试将字符串转换为数字:
该例如此运行:
var x = "100"; var y = "10"; var z = x / y; // z는 10이 될 것
该例也将如此运行:
var x = "100"; var y = "10"; var z = x * y; // z는 1000이 될 것
该例如此运行:
var x = "100"; var y = "10"; var z = x - y; // z는 90이 될 것
但是该例不会如上例般运行:
var x = "100"; var y = "10"; var z = x + y; // z는 110가 아니라 10010이 될 것
在最后一个例子中,JavaScript 用 + 运算符对字符串进行了级联。
NaN - 비数值
NaN
属于 JavaScript 保留词,指示某个数不是合法数。
尝试用一个非数字字符串进行除法会得到 NaN(Not a Number):
예제
var x = 100 / "Apple"; // x는 NaN(Not a Number)이 될 것
不过,假如字符串包含数值,则结果将是数:
예제
var x = 100 / "10"; // x는 10이 될 것
您可使用全局 JavaScript 函数 isNaN()
来确定某个值是否是数:
예제
var x = 100 / "Apple"; isNaN(x); // 반환 true, 왜냐하면 x는 숫자가 아닌 까지
주의해야 합니다. NaN
입니다. 수학 연산에서 NaN
이렇게 되면 결과도 NaN
:
예제
var x = NaN; var y = 5; var z = x + y; // z는 NaN이 됩니다.
결과는 문자열 연결될 수 있습니다:
예제
var x = NaN; var y = "5"; var z = x + y; // z는 NaN5가 됩니다.
NaN
는 숫자입니다typeof NaN
반환 number
:
예제
typeof NaN; // "number"을 반환
Infinity
Infinity
(또는 -Infinity
)는 JavaScript가 숫자 계산 중 최대 가능한 수 범위를 벗어났을 때 반환하는 값입니다。
예제
var myNumber = 2; while (myNumber != Infinity) { // Infinity까지 실행 myNumber = myNumber * myNumber; }
0으로 나누면 Infinity
:
예제
var x = 2 / 0; // x는 Infinity가 됩니다. var y = -2 / 0; // y는 -Infinity가 됩니다.
Infinity
는 숫자입니다:typeOf Infinity
반환 number
。
예제
typeof Infinity; // "number"을 반환
십육진수
JavaScript는 접두사 0x
의 숫자 상수를 십육진수로 해석합니다.
예제
var x = 0xFF; // x는 255이 됩니다.
앞자리 0을 사용하여 숫자를 쓰지 마십시오 (예: 07).
일부 JavaScript 버전은 앞자리 0을 가진 숫자를 8진수로 해석합니다.
기본적으로 Javascript는 숫자를 십진수로 표시합니다.
하지만 다음과 같이 사용할 수 있습니다 toString()
메서드는 숫자를 십육진수, 여덟진수 또는 이진수로 출력합니다.
예제
var myNumber = 128; myNumber.toString(16); // 80을 반환 myNumber.toString(8); // 200을 반환 myNumber.toString(2); // 10000000을 반환
숫자는 객체일 수 있습니다
일반적으로 JavaScript 숫자는 레이아웃된 원시 값으로 생성됩니다: var x = 123
하지만 키워드를 사용하여도 됩니다. new
객체로 정의됩니다: var y = new Number(123)
예제
var x = 123; var y = new Number(123); // typeof x 가 number를 반환합니다 // typeof y 가 object를 반환합니다
숫자 객체를 생성하지 마세요. 이렇게 하면 실행 속도가 느려집니다.
new
키워드는 코드를 복잡하게 하고, 예상치 못한 결과를 유발할 수 있습니다:
사용할 때 ==
같음 연산자를 사용할 때, 같은 수는 같이 보입니다:
예제
var x = 500; var y = new Number(500); // (x == y) 가 true 이유는 x와 y가 같은 값을 가지고 있기 때문입니다
사용할 때 =====
같음 연산자 후에, 같은 수가 다르게 보이게 됩니다. 이유는: =====
연산자는 타입과 값이 모두 일치해야 합니다.
예제
var x = 500; var y = new Number(500); // (x === y) 가 false 이유는 x와 y의 타입이 다르기 때문입니다
심지어 더 나쁜 경우. 객체는 비교할 수 없습니다:
예제
var x = new Number(500); var y = new Number(500); // (x == y) 가 false 이유는 객체가 비교할 수 없기 때문입니다
JavaScript 객체는 비교할 수 없습니다.
- 이전 페이지 JS 문자열 템플릿
- 다음 페이지 JS BigInt