refactor(logic): 과도한 수치 호환 보정을 제거한다
Core 수치 상태는 JavaScript와 PostgreSQL의 자연 정밀도를 유지한다. 정수 상태 경계와 절삭, 수입 배분 및 사망자 분할 순서는 보존한다.
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
# 수치 상태 정책
|
||||
|
||||
Core2026 제품 계산은 JavaScript `number`와 PostgreSQL/JSON이 보존하는 정밀도를
|
||||
그대로 사용합니다. Ref의 PHP 문자열 변환이나 MariaDB `FLOAT` 저장 형식을 맞추기
|
||||
위한 유효숫자 재양자화는 제품 상태에 적용하지 않습니다.
|
||||
|
||||
## 실수 상태
|
||||
|
||||
- 기술과 민심처럼 소수 누적이 가능한 값은 계산 결과를 `Math.fround()`,
|
||||
`toPrecision()` 또는 `Number.EPSILON`으로 보정하지 않습니다.
|
||||
- 비교 도구는 Ref 저장 형식을 해석할 수 있지만 그 투영을 Core 제품 상태에 다시
|
||||
적용하지 않습니다.
|
||||
- 화면 표시의 자리수와 로그 포맷은 상태 정밀도와 별개의 사용자 출력 계약입니다.
|
||||
|
||||
## 정수 상태
|
||||
|
||||
- 인구, 내정치, 자원, 경험과 공헌처럼 도메인에서 정수인 상태는 각 action의
|
||||
명시된 정수화 경계에서 `Math.round()`를 적용합니다.
|
||||
- 부상 적용 뒤 최종 능력치와 전투 사망자 40%/60% 분할은 각각 기존 도메인 규칙대로
|
||||
`Math.trunc()`를 유지합니다.
|
||||
- 수입은 장수 급여 비율을 계산할 때까지 소수 원값을 유지하고, 국가의 최종 정수
|
||||
상태를 갱신할 때 반올림합니다.
|
||||
|
||||
이 정수화와 처리 순서는 상태 의미와 다음 action 입력을 결정하므로 제거 대상
|
||||
호환 shim이 아닙니다.
|
||||
Reference in New Issue
Block a user