피드로 돌아가기
Perché i computer “non sanno contare” i soldi (e cosa fare nel frontend)
Dev.toDev.to
Frontend

IEEE 754 Floating Point 제거를 통한 금융 데이터 무결성 확보

Perché i computer “non sanno contare” i soldi (e cosa fare nel frontend)

frontendfacile.it2026년 6월 18일4intermediate

Context

이진법 기반의 IEEE 754 Floating Point 표현 방식으로 인한 소수점 연산 오차 발생. 특히 JavaScript의 0.1 + 0.2 연산 시 발생하는 0.30000000000000004와 같은 정밀도 손실이 대규모 트랜잭션에서 누적되어 재무적 불일치 및 취약점으로 작용하는 한계점 분석.

Technical Solution

  • 통화 단위를 최소 단위의 정수(Integer)로 변환하여 저장하는 정밀도 제어 전략 채택
  • 모든 산술 연산을 정수 기반으로 수행하여 Floating Point 오차 가능성을 원천 차단
  • API 통신 및 상태 관리 모델 내 Amount를 Cents 단위의 정수로 전송하여 데이터 일관성 유지
  • 비즈니스 룰에 따른 단일화된 Rounding 전략(Half-up 등)을 특정 시점에만 적용하는 파이프라인 설계
  • 계산 로직과 UI 표시 로직을 분리하여 Intl.NumberFormat을 통한 뷰 레이어 전용 포맷팅 적용
  • 고정밀 연산이 필요한 경우 BigInt 도입을 통한 정수 범위 확장 및 정밀도 보장

- API 설계 시 금액 필드를 Decimal 대신 최소 단위 정수(예: amount_cents)로 정의했는가 - Frontend에서 Number 타입을 이용한 합계 계산을 지양하고 정수 연산을 수행하는가 - 라운딩 처리 로직이 여러 단계에 분산되지 않고 단일 지점에서 관리되는가 - Intl.NumberFormat 등 전용 라이브러리를 출력 단계에서만 사용하는가

원문 읽기