본문 바로가기

프로그래밍 언어/Javascript

[자바스크립트]숫자형

e를 이용해 0의 개수가 많은 숫자 입력

let billion = 1e9;		//10억
1e3 = 1*1000;
1.23e6 = 1.23*1000000

1e-3 = 1/1000 (=0.001)

 

16진수, 8진수, 2진수

let num = 255;

alert(num.toString(2));		//11111111
alert(num.toString(16));	//ff

//변수가 아닌 실제 숫자에 접근할 경우
alert(123456..toString(16));	//..을 쓰거나 ()를 사용한다.
alert((123456).toString(16));	

 

어림수 구하기

//소수점 첫째자리에서 내림
Math.floor()

// 소수점 첫째자리에서 올림
Math.ceil();

// 소수점 첫째자리에서 반올림
Math.round();

//소수부 무시
Math.trunc();


//일정 소수 자리에서 어림할 경우
let num = 12.34;
alert(num.toFixed(1));	//12.3

//toFixed()는 항상 문자열을 반환한다.

 

정밀도 손실 이슈

alert(0.1+0.2==0.3);   //false

//위의 연산결과 값이 0.30000000000000004가 나와 true값이 나오지 않는다.
//이러한 정밀도 손실 문제에 대응하기 위한 방법으로는 toFixed()가 있다.

let sum = 0.1+0.2;
alert(sum.toFixed(2));	//0.30

//그러나 toFixed()는 문자열을 반환하기 때문에 뒤에 0이 붙는다.
//숫자로 바꾸기 위해 단항 덧셈연산자를 붙여주면 된다.
alert(+sum.toFixed(2));			//0.3

 

parseInt와 parseFloat

alert(parseInt("100px"));	//100
alert(parseInt("100em"));	//100

//단항연산자와는 다르게 숫자이외의 px, em과 같은 텍스트가 붙어도 숫자형을 반환해준다.

//그러나 아래는 NaN을 반환한다.
alert("a100");			//NaN


//parseInt()는 두번째 인수를 받아 원하는 진수 지정이 가능하다.
alert( parseInt('0xff', 16) ); // 255
alert( parseInt('ff', 16) ); // 255, 0x가 없어도 동작합니다.

 

기타 수학 함수

//0과 1사이의 난수 반환
Math.random();


//최솟값과 최댓값 반환
Math.min(a,b,c,..);
Math.max(a,b,c,..);


//거듭제곱
Math.pow(n, power);
Math.pow(2,10);		//2의 10제곱 = 1024