所有分數欄位 DB schema 為 decimal(6,3)——支援 0.125 公式造成的 3 位小數。

為什麼 (6,3) 不是 (5,2)

出勤扣分每小時 0.125 → 累積會產生 -0.375 / 69.625 / 75.125 等需要 3 位小數的數字。

decimal(5,2) 會精度損失,2026/04/17 遷移加寬至 decimal(6,3)

涉及欄位

欄位
ExamRecord ScoreA ~ ScoreIAttendanceDeduction
ExamParticipant FinalScoreScoreBeforeAdjust
AnnualResult *Score(多欄)
GradeAdjustment OriginalScoreAdjustedScore

遷移

Migrations/20260417113907_WidenScoreDecimalsTo6_3

歷史資料重算

修正舊 decimal(5,2) 累積的精度損失:

前端顯示統一

fmtScore

評分輸入限制

動作 精度
評分選項(10 個) 0.5 單位(0.5, 1.0, ... 5.0)
強制修正 / 調整分數 0.5 單位四捨五入(前端 onBlur 自動 round)

例:使用者輸入 75.3333 → onBlur → 75.5

相關概念