같은 연비 공식이라도 거리와 주유량이 서로 다른 구간에서 왔다면 결과를 믿기 어렵다. 나는 실제 소스의 확인 입력이 단순한 체크 장식인지부터 살펴봤다.
기존 도구와 작업 기록에는 같은 주유 기준 확인과 비주행 연료의 다른 처리 방식이 있다. 이번 공유 예제는 그 핵심 관계를 작은 고정 합성 값으로 다시 구현하며 차량 상태와 절감 효과를 판단하지 않는다.
공식보다 먼저 시작과 끝을 정한다
기존 코드는 시작·종료 누적거리와 구간 주유량을 받고 sameFillBasisConfirmed가 참이 아니면 계산을 멈춘다. 종료거리가 시작보다 커야 하는지도 확인한다. 서로 다른 시점의 영수증과 거리계를 섞어 넣고 결과만 정밀하게 표시하지 않기 위한 입력 계약으로 읽었다. 실제로 같은 기준인지 확인하는 사람의 책임은 여전히 남아 있다.
새 measured_fuel 함수도 명시적인 확인값을 요구한다. 다만 이 확인은 신뢰할 호출자의 선언이다. 함수가 탱크 수위나 주유 영수증을 읽어 검증하지 않는다. 체크가 있다는 이유로 측정이 자동 검증됐다고 쓰지 않고 결과에 호출자가 기준을 확인했다는 의미를 남겼다. 데이터 출처와 계산 역할을 구별하는 방식이다.
전체 주유량과 주행에 쓴 양을 나눈다
실제 소스는 비주행 연료를 없다고 두는 경우, 확인한 리터를 넣는 경우, 가동시간과 자체 소비율로 추정하는 경우를 구분한다. 이번 독립 예제는 더 좁게 확인한 비주행 리터만 받는다. 추정에 쓰는 추가 변수를 숨겨 같은 정확도로 보이지 않도록 공유 범위를 명시했다.
전체 연비의 분모는 전체 주유량이며 조정 주행 연비는 비주행 몫을 뺀 양이다. 두 값은 서로 다른 질문의 답이다. 조정한 값이 더 커진다고 실제 연료비가 줄어든 것은 아니다. 원래 지출과 주행 분모의 변경을 같은 절감 효과처럼 설명하지 않기 위해 출력도 따로 두었다.
합성 값으로 분모가 바뀌는 순간을 확인했다
새 예제에서 구간거리 100과 주유량 20이면 전체 비율은 5다. 비주행 양을 5로 선언하면 주행 비율은 100/15가 된다. 차감 전 비용 200과 확인된 차감 20에서 계산한 지출 180은 이 조정 때문에 바뀌지 않는다. 실제 차량 기록과 통화 단가가 아니라 책임을 분리해 보기 위한 고정 숫자다.
내부 비율은 분수로 보존하고 표시할 km당 금액만 정수 반올림한다. 기록 뷰어에는 어떤 분자와 분모가 남았는지 읽을 수 있다. 정밀한 값이 많다고 실제 측정의 오차가 줄어든 것은 아니다. 나는 수학의 정확한 계산과 입력 사실의 신뢰성을 한 가지 정확도라는 말로 묶지 않았다.
알 수 없는 차감액을 혜택으로 계산하지 않는다
원래 도구에는 확인된 보조금과 확인된 할인 필드가 따로 있다. 새 합성 계약은 확인된 차감 합계만 받고 지출보다 클 때 거절한다. 어떤 보조금을 받을 자격이 있는지, 실제로 입금됐는지와 같은 판단은 하지 않는다. 숫자를 넣었다는 사실과 제도의 적용 사실을 구별하는 것이다.
비주행 연료가 전체보다 크거나 같은 경우, 거리가 증가하지 않은 경우도 오류다. 근거 없는 기본값으로 결과를 살리지 않았다. 아직 확인하지 못한 입력이 있다면 계산을 미루거나 다른 가정의 예제로 명시해야 한다. 실제 지급제도와 회계 처리를 안내하려면 별도 최신 공식 확인이 필요하며 이번 코드는 그 조언을 제공하지 않는다.
공유할 것은 기록 기준을 확인하는 방법이다
로컬 테스트는 확인 누락, 거리 역전, 과도한 차감과 비주행 양, 조정 전후 지출의 보존을 검사했다. 원래 프로젝트의 과거 검수 숫자를 이번 통과로 가져오지 않았다. 공개 패키지에는 이번 독립 구현과 실제 고정 실행 기록이 있다. 브라우저나 차량에서 측정한 기록은 포함하지 않는다.
다른 업종의 효율 계산도 같은 질문을 받을 수 있다. 전력 사용량과 생산량이 같은 기간인지, 원재료와 완제품의 범위가 맞는지 먼저 확인해야 한다. 나는 공식 하나를 나누어 주는 것보다 그 공식에 넣을 자료의 시작과 끝을 확인하게 만드는 설계를 공개하고 싶었다. 계산기를 만들기 전의 질문도 프로그램의 중요한 일부다.