diff --git a/B08_Quantity/B08_Quantity_Engine_UnitQuantity_Revetment.py b/B08_Quantity/B08_Quantity_Engine_UnitQuantity_Revetment.py index b4e4cd14..8a0fdf5c 100644 --- a/B08_Quantity/B08_Quantity_Engine_UnitQuantity_Revetment.py +++ b/B08_Quantity/B08_Quantity_Engine_UnitQuantity_Revetment.py @@ -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