docs(B08): 엑셀 자름·반올림을 걷어 내지 말라는 근거를 주석에 남김
정본이 줄마다 INT(x*100)/100 으로 자르고 다음 줄이 그 잘린 값을 받으므로 표시용이 아니라 계산의 일부임. 안 자르면 막자갈 10.55 · 잔토 2.75 로 정본과 갈림. round(4.905) 가 짝수 반올림으로 4.90 이 되는 자리(물구멍관)도 함께 적음. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -171,18 +171,32 @@ EROSION_CHECK_WITHHELD: dict[str, str] = {
|
||||
}
|
||||
|
||||
|
||||
# ── 엑셀 자름·반올림 ────────────────────────────────────────────────────────
|
||||
# ⚠⚠ **걷어 내지 말 것.** 「자릿수 맞추기」로 보여 지우고 싶어지는 자리인데, 정본이
|
||||
# **줄마다 자르고 다음 줄이 그 잘린 값을 받는다** — 표시용이 아니라 **계산의 일부**다.
|
||||
# 입적 = INT(정면적 × 평균두께) ← 평균두께가 이미 잘린 값(1.09)
|
||||
# 막자갈 = INT(입적 − (…)) ← 입적이 이미 잘린 값(20.56)
|
||||
# 잔토 = ROUND(바닥파기 − (…)) ← 바닥파기가 이미 잘린 값(8.61)
|
||||
# 안 자르면 막자갈이 10.55, 잔토가 2.75 로 나와 **정본과 갈린다.**
|
||||
# 「정본과 같은 값」의 뜻을 **소수점까지**로 잡은 것이고, 거울 시험이 그것을 잡는다.
|
||||
|
||||
|
||||
def _floor2(value: float) -> float:
|
||||
"""엑셀 `INT(x*100)/100` · `ROUNDDOWN(x,2)`."""
|
||||
return math.floor(value * 100) / 100
|
||||
|
||||
|
||||
def _round2(value: float) -> float:
|
||||
"""엑셀 `ROUND(x,2)` — 파이썬 기본(짝수 반올림)과 갈리는 자리라 규칙을 맞춘다."""
|
||||
"""엑셀 `ROUND(x,2)`.
|
||||
|
||||
⚠ 파이썬 `round` 는 **짝수 반올림**이라 4.905 를 4.90 으로 내린다(엑셀은 4.91).
|
||||
물구멍관이 정확히 그 값이라 바꾸면 정본과 갈린다.
|
||||
"""
|
||||
return float(Decimal(str(value)).quantize(Decimal("0.01"), rounding=ROUND_HALF_UP))
|
||||
|
||||
|
||||
def _ceil2(value: float) -> float:
|
||||
"""엑셀 `ROUNDUP(x,2)`."""
|
||||
"""엑셀 `ROUNDUP(x,2)` — 야면석만 이쪽이다(정본이 그 줄만 올림)."""
|
||||
return math.ceil(value * 100) / 100
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user