11.5.3.2 부동 소수점(Floating-Point) 연산 및 로케일(Locale) 기반 포맷 비교 기법

11.5.3.2 부동 소수점(Floating-Point) 연산 및 로케일(Locale) 기반 포맷 비교 기법

엔터프라이즈 환경에서 숫자를 다루는 검증 오라클(Verification Oracle) 시스템을 구축할 때, 딱 떨어지는 정수형(Integer)의 비교는 비교적 단순한 텍스트 파싱으로 해결된다. 하지만 이자율, 외환 수수료, 암호화폐 환율 등 복잡한 소수점(Decimal)이 개입되는 부동 소수점(Floating-Point) 데이터와 각 국가별 고유한 통화 표기법(Locale)이 결합되는 순간, 의미론적 디핑(Diffing) 로직은 급격히 수학적으로 복잡해진다. 확률적 텍스트 생성기인 LLM은 대화의 문맥과 사용자의 언어적 취향에 맞추어 숫자의 표기를 자유 자재로, 때로는 제멋대로 변환하려는 강한 내재적 본능이 있기 때문이다.

1. 부동 소수점 정밀도 오차(Precision Error)와 입실론(Epsilon) 허용 검증법

소프트웨어 공학과 컴퓨터 아키텍처에서 부동 소수점 연산은 이진법 변환의 한계로 인해 본질적으로 미세한 단오차(Truncation Error)가 발생한다. 레거시 오라클이 복리의 수수료를 내부적으로 15.333333%로 계산하여 반환했을 때, 친절하고 똑똑한 LLM은 고객에게 읽기 편하도록 문맥상 자연스럽게 반올림을 적용하여 15.33%15.3%로 출력 텍스트를 생성해 낸다.

이를 검증기에서 단순한 == (Equals) 연산자나 하드코딩된 정규식으로 비교하려 든다면, 시스템은 무조건적인 검증 실패(Assertion Error) 트랩에 빠져 영원히 응답을 차단하게 된다. 따라서 부동 소수점 비교 검증기에서는 두 수식의 차이가 무제한에 가깝게 0으로 수렴함을 기반으로 하는, 미리 허용된 오차 범위인 입실론(Epsilon, \epsilon) 검증 테스트 패턴을 도입해야 한다.

def is_float_semantically_equivalent(
    oracle_ground_truth: float, 
    llm_extracted_value: float, 
    epsilon_tolerance: float = 0.015  # 도메인 정책에 따른 허용 오차폭
) -> bool:
    # 절대값 차이가 수학적 허용 오차(Epsilon) 이내인지 판별
    return abs(oracle_ground_truth - llm_extracted_value) <= epsilon_tolerance

위와 같은 소프트웨어적 허용 오차(Tolerance) 매커니즘을 통해, 비즈니스상 무의미한 소수점 셋째 자리 미만의 반올림이나 버림(Ceil/Floor) 연산에 의한 LLM의 사소한 자연어 텍스트 변환 차이를 유연하게 통과(Pass)시킬 수 있도록 검증기를 느슨하면서도 견고하게 조각해야 한다.

2. 자연어 다형성과 로케일(Locale) 인지형 포맷 정규화의 함정

또 하나 엔지니어의 골치를 썩이는 문제는, 국가나 언어권(Locale)마다, 심지어는 같은 한국어 프롬프트 내에서도 문맥에 따라 숫자를 읽고 표기하는 청크(Chunk) 방식이 완전히 다르다는 것이다. 한국어에 특화된 챗봇 프롬프트를 배포했을 때, 오라클이 정답으로 하달한 순수 Integer 정수 12000000을 LLM은 다음과 같이 무한한 자연어의 다형성(Polymorphism)을 띠고 표기할 수 있다.

  • “최종 결제 금액은 12,000,000원입니다.” (숫자 + 표준 보편적 쉼표 렌더링)
  • “고객님이 내실 돈은 1,200만 원입니다.” (숫자 쉼표 혼합 + 한국식 ‘만’ 단위 한글 청킹)
  • “정확히 천 이백만 원이 청구됩니다.” (완전한 자연어 한글화 치환, 숫자 토큰 없음)

단순한 오라클 검증 시스템은 이러한 다형성을 100% 포용(Embrace)하면서도 그 껍데기를 다 벗겨내고 본질적인 숫자의 뿌리를 역추출해 내야 한다. 단순한 replace(',', '') 수준의 저급한 스크립트를 넘어, 강력한 언어적 상수 토큰(“만”, “억”, “천”)을 감지하여 이를 실제 수학적 정수 곱셈 연산(\times 10^4, \times 10^8)으로 런타임에 즉각 변환(Mapping)해 내는 로케일 인지형 역파서(Locale-aware Reverse Parser) 모듈을 검증기 아키텍처 프론트 라인에 세워야 한다.

이러한 지능적인 수치 정규화 전처리(Numerical Preprocessing) 파이프라인 계층이 튼튼하게 구축되어야만 비로소, 피도 눈물도 없는 오라클의 ’이진법 정답 텐서’와 예측이 불가능한 최고급 언어 모델의 ‘자연스럽게 흘러가는 자연어 텍스트’ 사이의 충돌 없는 평화롭고 의미론적인 대조(Semantic Diffing)가 기술적으로 성립된다.