JavaScript Number

1. Number Constructor
- Number 객체는 Number() 생성자 함수를 통해 생성할 수 있다.
1 | new Number(value); |
- new와 함께 사용하지 않는다면 형변환을 한다.
1 | var x = Number('123'); |
2. Number Property
2.1 Number.EPSILON
- Number.EPSILON은 JavaScript에서 표현할 수 있는 가장 작은 수이다.
- 2진수의 형태로다저장되기에 모든 부동소수점은 산술 연산 비교는 정확한 값을 기대하기 어렵다.
- 부동소수점의 비교는 Number.EPSILON을 사용하여 비교 기능을 갖는 함수를 작성하여야 한다.
- ex) 0.1와 0.1보다 가장작은 것과의 차이가 EPSILON이다.
1
2
3
4
5
6
7
8
9
10console.log(0.1 + 0.2); // 0.30000000000000004
console.log(0.1 + 0.2 == 0.3); // false!!!
function isEqual(a, b){
// Math.abs는 절대값을 반환한다.
// 즉 a와 b의 차이가 JavaScript에서 표현할 수 있는 가장 작은 수인 Number.EPSILON보다 작으면 같은 수로 인정할 수 있다.
return Math.abs(a - b) < Number.EPSILON;
}
console.log(isEqual(0.1 + 0.2, 0.3));
2.2 Number.MAX_VALUE
- 자바스크립트에서 사용 가능한 가장 큰 숫자(1.7976931348623157e+308)를 반환한다.
MAX_VALUE보다 큰 숫자는 Infinity이다.
1 | Number.MAX_VALUE; // 1.7976931348623157e+308 |
2.3 Number.MIN_VALUE
- 자바스크립트에서 사용 가능한 가장 작은 숫자(5e-324)를 반환한다. MIN_VALUE는 0에 가장 가까운 양수 값이다. MIN_VALUE보다
작은 숫자는 0으로 변환된다.
1 | Number.MIN_VALUE; // 5e-324 |
2.4 Number.POSITIVE_INFINITY
- 양의 무한대 Infinity를 반환한다.
1 | Number.POSITIVE_INFINITY // Infinity |
2.5 Number.NEGATIVE_INFINITY
- 음의 무한대 -Infinity를 반환한다.
1 | Number.NEGATIVE_INFINITY // -Infinity |
2.6 Number.NaN
- 숫자가 아님(Not-a-Number)을 나타내는 숫자값이다. Number.NaN 프로퍼티는 NaN 프로퍼티와 같다.
1 | console.log(Number('xyz')); // NaN |
3. Number Method
- Number 안에 Method들은 형변환을 하지 않는다.
3.1 Number.isFinite()
- 매개변수를 통해 전달된 값이 유한수인지, 정상적인 수인지를 검사하여 그 결과를 Boolean으로 반환한다.
- Number 생성자 함수의 property들이다.(static method 정적)
1 | Number.isFinite(Infinity) // false |
3.2 Number.isInteger()
- 매개변수를 통해 전달된 값이 정수(Integer)인지 검사하여 그 결과를 Boolean으로 반환한다. 검사전에 인수를 숫자로 변환하지 않는다.
- Number 생성자 함수의 property들이다.(static method 정적)
1 | Number.isInteger(testValue) |
3.3 Number.isNaN()
- 매개변수를 통해 전달된 값이 NaN인지를 검사하여 그 결과를 Boolean으로 반환한다.
- Number 생성자 함수의 property들이다.(static method 정적)
1 | Number.isNaN(testValue) |
- NaN이 아니면 전부다 false이다.
3.4 Number.isSafeInteger()
- javascript로 표현할 수 있는 정수 범위 안에 있는가?
- 매개변수를 통해 전달된 값이 안전한(safe) 정수값인지 검사하여 그 결과를 Boolean으로 반환한다.
- 검사전에 인수를 숫자로 변환하지 않는다.
- Number 생성자 함수의 property들이다.(static method 정적)
1 | Number.isSafeInteger(testValue) |
3.5 Number.prototype.toExponential()
- 대상을 지수 표기법으로 변환하여 문자열로 반환한다.
- 객체에 대해서 호출한다.
1 | numObj.toExponential([fractionDigits]) |
3.6 Number.prototype.toFixed()
- 매개변수로 지정된
소숫점자리를 반올림하여문자열로 반환한다.
1 | numObj.toFixed([digits]) |
3.7 Number.prototype.toPrecision()
- 매개변수로 지정된
전체 자릿수까지 유효하도록 나머지 자릿수를 반올림하여 문자열로 반환한다. - 지정된 전체 자릿수로 표현할 수 없는 경우 지수 표기법으로 결과를 반환한다.
1 | numObj.toPrecision([precision]) |
3.8 Number.prototype.toString()
숫자를 문자열로 변환하여 반환한다.
1 | numObj.toString([radix]) |
3.9 Number.prototype.valueOf()
- Number 객체의 기본자료형 값(primitive value)을 반환한다.
1 | numObj.valueOf() |
Number를 String로 바꾸는 방법
- 1.’’+num
- 2.toString사용
- 3.String(num) new를 사용하지않고 만든다. 쓰지말것.
String을 Number로 바꾸는 방법
- 1.1 * str ex) 1*’12’ 단 str이 숫자로 변환될 수 있다는 전재
- 2.parseInt
- 3.Number(str)