자료형-숫자형

·2023년 2월 21일
0

모던 자바스크립트는 숫자를 나타내는 두 가지 자료형을 지원합니다.

일반적인 숫자는 '배정밀도 부동소수점 숫자(double precision floating point number)'로 알려진 64비트 형식의 IEEE-754에 저장됩니다.

임의의 길이를 가진 정수는 BigInt 숫자로 나타낼 수 있습니다.
BigInt는 아주 특별한 경우에만 사용됩니다.


숫자를 입력하는 다양한 방법

  1. 수기로 작성
<script>
let billion = 1000000000; // 10억
</script>
<script>
let ms = 0.000001; // 1마이크로초
</script>
  1. e 사용
  • e 옆에 숫자만큼 0이 입력됩니다.
<script>
let billion = 1e9;  // 10억, 1과 9개의 0
</script>
  • e 옆에 음수만큼 0이 입력됩니다.
<script>
let ms = 1e-6; // 1에서 왼쪽으로 6번 소수점 이동
</script>

어림수 구하기(많이 사용됩니다)

  1. Math.floor
    소수점 첫째 자리에서 내림(버림). 3.1은 3, -1.1은 -2가 됩니다.

  2. Math.ceil
    소수점 첫째 자리에서 올림. 3.1은 4, -1.1은 -1이 됩니다.

  3. Math.round
    소수점 첫째 자리에서 반올림. 3.1은 3, 3.6은 4, -1.1은 -1이 됩니다.

  4. Math.trunc
    소수부를 무시. 3.1은 3이 되고 -1.1은 -1이 됩니다.


toFixed(n)

  • 원하는 소수점 자리까지 출력
  • 0..4는 버림하고, 5..9는 올림합니다.
  • 이 메서드의 반환 값은 문자열입니다.
  1. 소수점 두 번째 자릿수까지만 남겨야 하는 경우
<script>
let num = 12.3456;
alert( num.toFixed(2) ); // "1.23"
</script>
  1. 소수점 첫 번째 자리수까지만 남겨야 하는 경우
<script>
let num = 12.34;
alert( num.toFixed(1) ); // "12.3"
</script>
  1. toFixed()의 반환값은 문자열이기 때문에 소수부의 길이가 인수보다 작으면 끝에 0이 추가됩니다.
<script>
let num = 12.34;
alert( num.toFixed(5) ); // "12.34000", 소수부의 길이를 5로 만들기 위해 0이 추가되었습니다.
</script>
  1. +num.toFixed(5) 처럼 단항 덧셈 연산자를 앞에 붙이거나
    Number()를 호출하면 문자형의 숫자를 숫자형으로 변환할 수 있습니다.
<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>

특수 숫자

  1. Infinity와 -Infinity – 그 어떤 숫자보다 큰 혹은 작은 특수 숫자 값
  2. NaN – 에러를 나타내는 값

두 특수 숫자는 숫자형에 속하지만 ‘정상적인’ 숫자는 아니기 때문에, 정상적인 숫자와 구분하기 위한 특별한 함수가 존재합니다.

1. isNaN

인수를 숫자로 변환한 다음 NaN인지 테스트함

<script>
alert( isNaN(NaN) ); // true
alert( isNaN("str") ); // true
</script>

NaN은 NaN 자기 자신을 포함하여 그 어떤 값과도 같지 않기 때문에,
비교 연산자로 구분할 수 없습니다.

<script>
alert( NaN === NaN ); // false

alert( isNaN(NaN) ); // true. inNaN으로만 구분 가능
</script>

2. isFinite(value)

인수를 숫자로 변환하고 변환한 숫자가 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() parseFolat()

두 함수는 불가능할 때까지 문자열에서 숫자를 ‘읽습니다’. 숫자를 읽는 도중 오류가 발생하면 이미 수집된 숫자를 반환합니다.

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엔 다양한 수학 관련 함수와 상수들이 들어있습니다.

  • Math.random()
    0과 1 사이의 무작위 수를 반환합니다(1은 제외).
<script>
alert( Math.random() ); // 0.1234567894322
alert( Math.random() ); // 0.5435252343232
alert( Math.random() ); // ... (무작위 수)
</script>
  • Math.max(a, b, c...) / Math.min(a, b, c...)
    인수 중 최대/최솟값을 반환합니다.
<script>
alert( Math.max(3, 5, -10, 0, 1) ); // 5
alert( Math.min(1, 2) ); // 1
</script>
  • Math.pow(n, power)
    n을 power번 거듭제곱한 값을 반환합니다.
<script>
alert( Math.pow(2, 10) ); // 2의 10제곱 = 1024
</script>
profile
저녁놀 마을 사람

0개의 댓글

관련 채용 정보