수형 표현 (Math expression) - JS

Yeonkor·2020년 9월 10일
0

Javascript

목록 보기
3/12

1.타입

자바스크립트는 수에 대해서 관용적인 언어이다.

수를 선언할 때, 타입을 따로 선언하지 않으며, Number라는 타입 하나로 정리되며, 모든 수는 동일한 방식으로 처리되며, 선언에 담기는 값에따라 자바스크립트 엔진은 그 타입을 인지할 뿐이다.

이는 자바스크립트가 갖는 장점이 될 수도 있다고 생각한다.

메모리에 IEEE - 754 형식을 이용해서 저장한다.이 형식에 의해 - (2⁵³ - 1) 부터 2⁵³ - 1 까지는 정확히 IEEE - 754 로 표현될 수 있지만, 그 초과와 이하 는 IEEE - 754 로 직접 표현될 수 없으며 가까운 수나 0 으로 반올림 한다.

JS는 모든 숫자값을 64 비트 부동소수점으로 관리한다.java에서 integer, float 등으로 정수와 실수 타입을 구분하던것과는 달리 모든 숫자를 double 타입으로 저장하는것과 같다.

결론적으로 자바스크립트는 내부적으로 명확히는 정수형이 없고 실수형으로 엄격히 존재한다.

2.수의 표현

*정수(Integers): 자연수, 음의 정수 및 0으로 이루어진 모든 수들이다.

*부동소수점 방식(floats): [ 14.2 ] , [ 1.212121312 ]와 같이 소수점,소수 자릿수가 존재한다. Javascript 에서 소수를 정의하기 위해서는. 소숫점이 수 안에 존재하면 소수로 인식된다. 소수점이 없다면 이는 간략히 정수로 표현된다. [ 자바스크립트 엔진이 참 능동적이다 ]

소수는 정수를 포함한 32 비트 까지 표현이 가능하다. 그 이상은 반올림 처리된다.Javascript 에서 소수 연산은 정확하지 않다.다른 여러 방법으로 소수 연산을 처리하고 있다.

=> console.log(0.1 + 0.2);
// 0.30000000000000004

var a = Number.MAX_SAFE_INTEGER || 9007199254740991;
var b = a + 1
console.log(Number.isSafeInteger(a));
// true;
console.log(Number.isSafeInteger(b));
// false


var c = 18437736874454810627;
console.log(c);
// 18437736874454810000
10진수 -> 16진수 

var dec = 123;
var hex = dec.toString(16); // === "7b"
* 10진수 -> 2진수

var dec = 123;
var bin = dec.toString(2); // === "1111011"

* 16진수 -> 10진수

var hex = "7b";
var dec = parseInt(hex, 16); // === "123"

* 16진수 -> 2진수 (* 10진수로 바꿨다가 다시 2진수로 바꾼다)

var hex = "7b";
var bin = parseInt(hex, 16).toString(2); // === "1111011"

* 2진수 -> 10진수

var bin = "1111011";
var dec = parseInt(bin, 2); // === "123"
* 2진수 -> 16진수 (* 10진수로 바꿨다가 다시 2진수로 바꾼다)

var bin = "1111011";
var hex = parseInt(bin, 2).toString(16); // === "7b"

출처: https://unikys.tistory.com/334 [All-round programmer]

3.특수 표기

*지수표기법

너무 큰 숫자는 exponent 표기법을 사용하여 표현할 수 있다. 이때 e 는 대소문자를 가리지 않는다. e 앞의 숫자를 뒤에 있는 숫자 만큼 10 으로 곱한다. 앞의 숫자를 소수로 작성 할 수도 있다. 소수는 e 뒤에 - 를 붙힘으로 표현할 수 있다.

console.log(1.123E+5);
// 112300
console.log(1.123e-5);
// 0.00001123

console.log(1e20);
// 100000000000000000000

console.log(1e21);
// 1e+21

console.log(1e308);
// 1e+308

console.log(1e309);
// Infinity

*무한대 (Infinity)

Javascript 에서는 모든 숫자를 표현할 수 없다.때문에 표현할 수 있는 범위를 넘어가면, Infinity 로 표현한다.
Number.MAX_VALUE 와 Number.MIN_VALUE 으로 범위를 알 수 있다. Number.POSITIVE_INFINITY 와 Number.NEGATIVE_INFINITY 으로 무한대 값을 가져올 수 있다.

console.log(Number.MAX_VALUE);
// 1.7976931348623157e+308

console.log(Number.MIN_VALUE);
// 5e-324

console.log(Infinity);
console.log(Number.POSITIVE_INFINITY);
// Infinity

console.log(-Infinity);
console.log(Number.NEGATIVE_INFINITY);
// -Infinity
profile
CTO를 꿈꾸는 CDO

0개의 댓글