prompt로 받으면 왜 string으로 받아질까?

박서현·2023년 8월 16일
1
post-thumbnail

문자열로 받아지는 이유

  • javascript는 동적언어이다.
  • 변수의 데이터 타입을 런타임(runtime) 시에 결정한다.
    (JS는 코드가 실행될 때 데이터타입이 정해진다.)
  • prompt로 입력을 받을 때 어떤 종류의 데이터가 입력될지 확정할 수 없기 때문에 일관성을 유지하기 위해 입력값을 문자열로 받는다.



문자열을 숫자형으로 바꾸는 방법

const input = prompt("숫자를 입력해주세요")
const num1 = parseInt(input)
const num2 = parseFloat(input)
const num3 = Number(input)

1. parseInt()

  • 문자열을 정수(integer)로 변환합니다.
  • 정수로 변환할 수 없는 부분을 만나면 변환을 중단하고 해당 부분 이전까지의 숫자를 반환합니다.
  • 문자열의 앞부분부터 숫자를 찾기 시작하며, 숫자가 아닌 문자를 만나면 변환을 종료합니다.
  • 기본적으로 10진수를 사용합니다만, 두 번째 인자로 진법(base)을 지정하여 다른 진법의 수로 변환할 수도 있습니다.

2. parseFloat()

  • 문자열을 부동소수점 숫자(float)로 변환합니다.
  • parseInt와 비슷하게 문자열의 앞부분부터 숫자를 찾습니다.
  • 소수점 이하의 숫자를 포함하여 변환합니다.

★ float은 소수점이 있는 숫자 자료형이에요!

3. Number()

  • 일반적으로 매개변수로 받은 값을 숫자로 변환합니다.
  • 정수나 부동소수점 숫자, 그리고 숫자가 아닌 값을 모두 변환할 수 있습니다.
  • parseInt와 parseFloat와는 다르게 문자열의 전체를 변환하려고 시도하며, 문자열 중간에 숫자가 아닌 문자가 있더라도 변환을 시도합니다.
  • Number는 단일 인자로 사용되는 경우 숫자 변환이 이루어지고, new Number(value)와 같이 생성자로 사용될 경우 객체로 값을 감싸게 됩니다.

예시코드

const numStr = "42";
const floatStr = "3.14";
const str = "123Hello";

console.log(parseInt(numStr)) // 42
console.log(parseInt(floatStr)) // 3
console.log(parseInt(str)) // 123

console.log(parseFloat(numStr)) // 42
console.log(parseFloat(floatStr)) // 3.14
console.log(parseFloat(str)) // 123

console.log(Number(numStr)) // 42
console.log(Number(floatStr)) // 3.14
console.log(Number(str)) // NaN
🐷 새롬님!!
우리가
const ranNum = Math.floor(Math.random() * 10)
이렇게 한 부분을
const ranNum = parseInt(Math.random() * 10)
이렇게 했어도 됐을것같아요!

🐷🐷 Math.floor와 parseInt는 사용 목적이 다르기 때문에 결과는 같아보이지만
🐷🐷 코드작성, 다른 사람들과 공유했을 때 혼란을 줄 수 있다.
🐷🐷 그렇기 때문에 올바른 목적에 맞게 사용해야한다.

0개의 댓글