AI 보이는 추론 실험실 · 변환과 입력 검증

parseInt가 12를 돌려주면 입력 전체가 올바른 정수일까?

12px·12.5·1e3·빈 문자열을 실제로 변환하고, 앞부분을 읽는 함수와 전체 입력 형식을 검사하는 규칙을 비교합니다.

탐구게시 2026-10-17읽기·실험 약 10분확인 문제 2개규칙 기반 실행한국논리학협회 자체 제작제작·검수 LTCT 편집부

저녁 작업실에서 데이터 카드를 분류하는 남성과 카드 옆의 작은 공식 올리
생성 이미지로 표현한 자료 검토 장면입니다. 카드 자체는 활동의 실제 입력 자료가 아닙니다. · 주제 이해를 돕기 위한 AI 생성 이미지 · LTCT 자체 제작
오늘의 질문

자바스크립트의 parseInt('12px', 10)이 12를 돌려주었다면 '12px' 전체를 정수 입력으로 받아도 될까요?

12px 입력에 대해 parseInt는 12, Number는 NaN, 부호와 십진 숫자만 허용하는 전체 형식 검사는 불통과인 비교
12px 입력에 대해 parseInt는 12, Number는 NaN, 부호와 십진 숫자만 허용하는 전체 형식 검사는 불통과인 비교 · 한국논리학협회 자체 제작
그림 크게 보기 ↗
01

앞부분을 읽은 결과와 전체 승인 여부는 다릅니다

수량을 입력하는 칸에 12px가 들어왔다고 합시다. AI가 파스인트(parseInt, 문자열 앞부분을 정수로 읽는 함수)로 바꾸면 12가 나오니 정상이라고 설명할 수 있습니다. 그러나 숫자 12를 얻은 과정과 원래 입력 전체를 허용해도 되는지는 서로 다른 질문입니다.

parseInt('12px', 10)은 앞에서 십진 숫자로 읽을 수 있는 부분을 읽고 p에서 멈춥니다. 결과 12에는 뒤의 px를 읽지 않았다는 별도 표시가 붙지 않습니다. 그래서 변환된 숫자만 기록하면 원래 입력의 형식 문제를 놓칠 수 있습니다.

02

소수점과 지수 표기도 대조합니다

활동에서 12.5를 선택하면 parseInt는 소수점 앞의 12를 돌려줍니다. Number는 전체 문자열을 숫자 표기로 해석해 12.5가 됩니다. 어느 함수를 쓸지는 소수를 허용하는 입력인지에 따라 달라집니다.

1e3에서는 parseInt의 결과가 1이고 Number의 결과는 1000입니다. 십진 정수 읽기는 e에서 멈추지만 Number의 숫자 표기에서는 지수가 해석됩니다. AI가 두 함수를 언제나 같은 변환이라고 설명한다면 이 작은 대조로 차이를 확인할 수 있습니다.

03

빈 입력이 0으로 바뀌는 경우도 살핍니다

입력란을 모두 지워 보세요. parseInt의 결과는 NaN(낸, 숫자 결과를 얻지 못했음을 나타내는 값)이고 Number의 결과는 0입니다. 공백만 남겨도 Number는 0을 돌려줍니다.

빈칸을 수량 0과 같은 뜻으로 받기로 정한 적이 없다면 변환 전에 누락 여부를 확인해야 합니다. Number가 숫자를 돌려준다는 조건만으로 사용자가 값을 입력했다고 판단할 수 없습니다. NaN도 일반적인 오류 문구가 아니라 프로그램 안에서 구별해야 할 특별한 숫자 값입니다.

04

학습용 입력 규칙을 명시해서 비교합니다

세 번째 결과는 앞뒤 공백을 제거한 뒤 선택적인 + 또는 - 부호와 하나 이상의 0~9 숫자만 허용합니다. 여기서 음수 부호는 키보드의 하이픈(-)이며, 모양이 비슷한 수학 기호(−)는 이 입력 규칙에 포함하지 않습니다. 이 규칙에서 12와 -12는 통과하고 12px·12.5·1e3·빈칸은 통과하지 않습니다. 이것은 이 실험이 정한 정수 입력 형식입니다.

문자열을 직접 바꾸면서 세 결과를 먼저 예상한 뒤 확인하세요. 형식 통과는 입력 값이 업무상 허용된다는 뜻까지 포함하지 않습니다. 예를 들어 -12가 정수 형식에는 맞아도 구매 수량으로는 부적절할 수 있습니다. 최솟값·최댓값·안전한 정수 범위 등은 별도 조건입니다.

05

변환 전에 무엇을 허용할지 결정합니다

이 활동은 최대 마흔 자의 학습용 문자열을 처리하며 결과를 서버에 보내지 않습니다. 큰 정수의 정밀도와 다른 언어의 파싱 규칙은 별도의 검토 대상입니다. 화면의 형식 검사만 실제 서비스 검증 코드로 복사해서는 안 됩니다.

AI의 보고에는 원래 문자열, 진법, 사용한 함수, 변환 결과, 허용 형식을 나누어 적으세요. 잘못된 입력에서 일부 숫자를 얻는 기능이 필요한 상황도 있습니다. 문제는 그 기능을 전체 입력 검증이라고 부르는 데 있습니다.

직접 확인하기 · 규칙 기반 실행

같은 문자열을 세 가지 규칙으로 확인하기

parseInt(파스 인트, 정수 해석 함수)는 십진법 10을 명시합니다. Number(넘버, 숫자 변환)와 앞뒤 공백 제거 후 부호·십진 숫자만 허용하는 학습용 형식 규칙을 비교합니다. 외부 제출·저장은 하지 않습니다.

변환과 전체 입력 형식 비교하기

원문 표시: "12px"

parseInt(input, 10): 12

Number(input): NaN

전체 정수 형식: 불통과

형식 통과와 허용 수량·정밀도 검사는 별개입니다.

입력 조건에 따른 학습용 결과입니다. 초기화하면 처음 조건으로 돌아갑니다.

관계를 읽고, 다른 상황에 적용하기

두 문제로 생각 확인

1parseInt('12px', 10)이 12인 직접적인 이유는?
2이 활동에서 빈 문자열을 Number로 변환하면?

두 문제의 답을 모두 선택하면 해설을 볼 수 있습니다.

나의 설명으로 마무리

오늘 발견한 관계

0 / 4,000자

메모는 현재 기기의 브라우저에만 보관됩니다. 계정이나 다른 기기에는 동기화되지 않습니다.

출처와 제작 안내

원문을 참고해 설명·도표·문항·실험을 새로 작성했습니다. 별도 표시가 없는 사례와 수치는 학습을 위한 가상 예시입니다. 원문 번역이나 실제 모델의 성능 평가 자료가 아닙니다.

  1. 문자열의 앞부분을 정수로 읽는 규칙 ↗Ecma International · TC39ECMAScript Language Specification · 19.2.5 parseInt

    진법10, 첫 비숫자에서 중단, 빈 숫자 부분의 NaN 확인.

  2. 문자열 전체의 숫자 변환 ↗Ecma International · TC39ECMAScript Language Specification · 7.1.4.1 ToNumber Applied to the String Type

    빈 문자열과 공백은 +0, 부적합 문법은 NaN임을 확인. 전체 정수 형식 검사는 자체 학습 규칙.