숫자

김예희·2023년 8월 17일
0

🔎 숫자의 종류

1. 정수

  • 10, 100, -100

2. 부동소수점 실수 (float)

  • 1.1, 10.1

3. 부동소수점 실수 (double)

  • IEEE754표준 부동소수점보다 더 정밀한 데이터

✔️ 부동소수점이란 컴퓨터에서 실수를 표현하는 방법
✔️ IEEE754는 Institute of Electrical and Electronics Enginners (전기 전자 기술자 협회)에서 컴퓨터에 부동소수점을 표현하는 방법을 정의한 것.


🚨 무한소수?

우리는 일반적으로 십진법으로 계산하지만 컴퓨터는 이진법 즉 0과 1로만 계산한다. 그래서 컴퓨터가 알아들을 수 있는 0과 1로 구성된 이진법으로 변환해야 하는데, 이때 무한소수로 변환되는 오류가 생길 수 있다.

ex) 0.1 + 0.2 를 했을 때 0.3이 아닌 0.300000000004 로 계산된다.

⚙️ 해결방법!

  • toFixed(num) 메서드
    • num의 자리수까지 반올림해 String으로 변환한다.
    • toFixed(1) : 소수점 아래 1번째 자리까지만 보여준다.
  • Math.round()
    • 반올림 해주는 함수 (소수점 뒷자리는 버리게 된다)
  • 기타 라이브러리
    • Big.js, BigBumber.js, Decimal.js
    • 미세한 오차가 발생하지 않도록 예외처리를 한다

🔒 상수와 리터럴

상수 (constant): 코드에서 변하지 않는 변수
리터럴 (literal): 코드에서 변하지 않는 데이터

const myAge = 20;
-> myAge:상수
-> 20:리터럴

정수 리터럴

  • 10진수 또는 16진수
  • 10진수 -> 0~9
  • 16진수 -> 0x로 시작해서 뒤에 숫자 또는 알파벳이 붙는다. (0xFF, 0x12, 0x1F)
    • 0~9는 그대로 표기
    • 10~15는 A~F로 표기

부동 소수점

  • 실수 표기
    • 10.1, 11.1, 0.11
  • 지수 표기
    • 2e2, 2e-2

❗️ NaN (Not a Number)의 type도 number type이다.


🔮 숫자 변환

더하기 연산자(+)를 이용해 문자열을 숫자로 변환하기

문자열 "12"

const quantity = "12";
console.log(+quantity);

-> 12

(true)

let num1 = +(true);
document.write(num1);
document.write(typeof num1);

-> 1
-> number


곱하기 연산자(*)를 이용해 문자열을 숫자로 변환하기

(false)

let num1 = (false) * 2;
document.write(num1);
document.write(typeof num1); 

-> 0 (0 * 2)
-> number

문자열 "20"

let num1 = ("20") * 2;
document.write(num1);
document.write(typeof num1); 

-> 40
-> number


♾️ Infinity

console.log(Infinity); // Infinity
console.log(Infinity + 1); // Infinity
console.log(Math.pow(10,1000)); //Infinity (10^1000)
console.log(Math.log(0)); //-Infinity (ln(0))
console.log(1 / Infinity); //0
Console.log(1 / 0); // Infinity

🧐 isFinite(val) : infinity 처리 방법

  • 유한/무한 숫자 판별하는 함수
  • true는 유한 숫자
  • false는 무한 숫자
  • val은 검사할 값

💡 BigInt

  • Number의 최대값보다 큰 정수를 표현한다
  • Bigint 데이터 타입

❗️ 사용불가

  • Math 객체의 메서드와 함께 사용불가
  • 연산에서 Number와 함께 사용불가

BigInt 사용 방법

const bigInt = 9007199254740991n
const bigInt = BigInt(9007199254710991);
const bigInt = BigInt(" 9007199254710991 ");
const bigInt = BigInt("0x1fffffffffffff");
const bigInt = BigInt("ob111111111111111111111111111111111111111111111111111111"); -> 9007199254710991n


🧐 Number.isInteger(num)

  • 정수인지 판별하는 함수
  • 매개변수 값 num = 정수인지 확인하는 값
  • 반환 값은 참(true)과 거짓(false)
  • 반환 타입은 Boolean
console.log(Number.isInteger(Infinity)); // false
console.log(Number.isInteger('10')); // false
console.log(Number.isInteger(true)); // false
console.log(Number.isInteger(false)); // false
console.log(Number.isInteger([1])); // false
console.log(Number.isInteger(Number(true))); // true --> number타입 변환 1

🧐 Number.parseFloat(val)

  • 실수로 변환하는 함수
  • 매개변수 값 val= 실수로 변환할 값
  • 반환 값은 변환된 값
  • 반환 타입은 Number

🔎 문자열 "12.62aaa"는 어떻게 변환될까?

let myAge = "12.62aaa";
 document.write(parseFloat(myAge)); // 12.62
 document.write(typeof parseFloat(myAge)); // number

🔎 실수값 12.22는 어떻게 변환될까?

let myAge = 12.22;
document.write(parseFloat(myAge)); // 12.62
document.write(typeof parseFloat(myAge)); // number

🔎 문자열 "aa 123 aa aa"는 어떻게 변환될까?

let str = "aa 123 aa aa"; 
document.write(Number.parseFloat(str)); //NaN

--> ❗️시작되는 문자가 숫자형식이 아닌 문자형식이면 실수로 변환하지 못한다.


🔎 문자열 "10 11 12"는 어떻게 변환될까?

let str = "10 11 12";
document.write(Number.parseFloat(str)); // 10

--> ❗️ 맨 앞의 숫자만 변환하고 공백 뒤의 숫자는 버린다.


🧐 Number.isNaN(num)

  • NaN인지 판별하는 함수
  • 매개변수 num은 NaN인지 확인하는 값
  • 반환 값은 참(true)과 거짓(false)
  • 반환 타입은 Boolean
console.log(Number.isNaN(NaN)); //true
console.log(Number.isNaN(Number.NaN)); //true
console.log(Number.isNaN(0 / 0)); //true

console.log(Number.isNaN("NaN")); // false
console.log(Number.isNaN(undefined)); // false (undefined 타입이다)
console.log(Number.isNaN({})); // false
console.log(Number.isNaN("blabla")); // false

console.log(Number.isNaN("true")); // false
console.log(Number.isNaN("null")); // false (null 타입)
console.log(Number.isNaN(37)); // false
console.log(Number.isNaN("37")); // false
console.log(Number.isNaN("")); // false

0개의 댓글