모던 자바스크립트는 숫자를 나타내는 두 가지 자료형을 지원합니다.
일반적인 숫자는 '배정밀도 부동소수점 숫자(double precision floating point number)'로 알려진 64비트 형식의 IEEE-754에 저장됩니다.
임의의 길이를 가진 정수는 BigInt 숫자로 나타낼 수 있습니다.
BigInt는 아주 특별한 경우에만 사용됩니다.
<script>
let billion = 1000000000; // 10억
</script>
<script>
let ms = 0.000001; // 1마이크로초
</script>
<script>
let billion = 1e9; // 10억, 1과 9개의 0
</script>
<script>
let ms = 1e-6; // 1에서 왼쪽으로 6번 소수점 이동
</script>
Math.floor
소수점 첫째 자리에서 내림(버림). 3.1은 3, -1.1은 -2가 됩니다.
Math.ceil
소수점 첫째 자리에서 올림. 3.1은 4, -1.1은 -1이 됩니다.
Math.round
소수점 첫째 자리에서 반올림. 3.1은 3, 3.6은 4, -1.1은 -1이 됩니다.
Math.trunc
소수부를 무시. 3.1은 3이 되고 -1.1은 -1이 됩니다.
<script>
let num = 12.3456;
alert( num.toFixed(2) ); // "1.23"
</script>
<script>
let num = 12.34;
alert( num.toFixed(1) ); // "12.3"
</script>
<script>
let num = 12.34;
alert( num.toFixed(5) ); // "12.34000", 소수부의 길이를 5로 만들기 위해 0이 추가되었습니다.
</script>
<script>
let num = 12.3456;
console.log(typeof num.toFixed(2)); // string
console.log(typeof Number(num.toFixed(2))); // number
console.log(typeof +num.toFixed(2)); //number
</script>
특수 숫자
두 특수 숫자는 숫자형에 속하지만 ‘정상적인’ 숫자는 아니기 때문에, 정상적인 숫자와 구분하기 위한 특별한 함수가 존재합니다.
인수를 숫자로 변환한 다음 NaN인지 테스트함
<script>
alert( isNaN(NaN) ); // true
alert( isNaN("str") ); // true
</script>
NaN은 NaN 자기 자신을 포함하여 그 어떤 값과도 같지 않기 때문에,
비교 연산자로 구분할 수 없습니다.
<script>
alert( NaN === NaN ); // false
alert( isNaN(NaN) ); // true. inNaN으로만 구분 가능
</script>
인수를 숫자로 변환하고 변환한 숫자가 NaN/Infinity/-Infinity가 아닌 일반 숫자인 경우 true를 반환함
<script>
alert( isFinite("15") ); // true
alert( isFinite("str") ); // false, NaN이기 때문입니다.
alert( isFinite(Infinity) ); // false, Infinity이기 때문입니다.
</script>
숫자만 추출하는 방법
단항 덧셈 연산자 + 또는 Number()를 사용하여 숫자형으로 변형할 때 적용되는 규칙은 꽤 엄격합니다. 피연산자가 숫자가 아니면 형 변환이 실패합니다.
<script>
alert( +"100px" ); // NaN
</script>
두 함수는 불가능할 때까지 문자열에서 숫자를 ‘읽습니다’. 숫자를 읽는 도중 오류가 발생하면 이미 수집된 숫자를 반환합니다.
parseInt는 정수, parseFloat는 부동 소수점 숫자를 반환합니다.
<script>
alert( parseInt('100px') ); // 100
alert( parseFloat('12.5em') ); // 12.5
alert( parseInt('12.3') ); // 12, 정수 부분만 반환됩니다.
alert( parseFloat('12.3.4') ); // 12.3, 두 번째 점에서 숫자 읽기를 멈춥니다.
</script>
두 함수가 NaN을 반환하는 경우는 처음부터 읽을 숫자가 없을 때 입니다.
<script>
alert( parseInt('a123') ); // NaN, a는 숫자가 아니므로 숫자를 읽는 게 중지됩니다.
</script>
자바스크립트에서 제공하는 내장 객체 Math엔 다양한 수학 관련 함수와 상수들이 들어있습니다.
<script>
alert( Math.random() ); // 0.1234567894322
alert( Math.random() ); // 0.5435252343232
alert( Math.random() ); // ... (무작위 수)
</script>
<script>
alert( Math.max(3, 5, -10, 0, 1) ); // 5
alert( Math.min(1, 2) ); // 1
</script>
<script>
alert( Math.pow(2, 10) ); // 2의 10제곱 = 1024
</script>