자바스크립트 정수가 소수로 표현되는 이유 : 부동소수점
2026. 2. 19. 15:40ㆍFrontend
1. 배경
한 항목 수익률을 구하기 위해 퍼센티지 계산을 했다.
0.2814 * 100
> 28.139999999999997
28.14%가 아닌 다른 값을 반환했다.
2. 문제 확인
자바스크립트는 숫자를 64비트 형식(IEEE-754)으로 표현한다.
64 비트 중
- 52비트는 유효 숫자를
- 11비트는 지수를
- 1비트는 부호 저장한다
0.1 ≈ 0.10000000000000000555...
0.2 ≈ 0.20000000000000001110...
위 예시처럼
자바스크립트 숫자(부동소수점)는 근사치로 표현된다.
정수 또한 부동소수점으로 저장되며,
가끔 2진수로 정확히 표현되지 않는 숫자는 근사치로 저장된다.
0.2814 * 100 === 28.14
> false
부동소수점의 구조적 한계로 계산에서 불일치가 발생하는 것이 원인이었다.
참고
- 배정밀도 부동소수점수 — 위키백과
'Frontend' 카테고리의 다른 글
| React Native 이미지 동적 호출 안 되는 이유 (0) | 2026.02.19 |
|---|---|
| React Invalid Hook Call 해결 : pnpm Monorepo에서 React 중복 원인 (0) | 2026.02.19 |
| pnpm install 오류 원인: pnpm-workspace.yaml 위치 문제 (0) | 2026.02.08 |
| Override 기능으로 개발자 도구 감지 우회하기 (0) | 2026.01.13 |
| 2026 그룹바이 스타트업 채용 박람회에서 여러 기업과 커피챗한 후기 (0) | 2026.01.13 |