本篇用一份独立的虚构游戏记录练习百分比效果与结算顺序。先按规则预测最后状态,再逐行对照运算,可以找出差异究竟来自输入、边界条件,还是结算先后。下面所有数值都只服务于这一道练习。
先读清楚本例规则
效果甲增加11%,乙增加5%。版本一同层相加,基础值乘(1+11%+5%);版本二分层相乘,基础值乘(1+11%)再乘(1+5%)。只在全部计算结束后向下取整。
待测基础值:59,151,112,140,43,144
为何这样记录
两种百分比效果究竟相加还是分层相乘,要由规则决定。单看界面上的两个百分数,无法判断最后数值;还需要知道在哪一步取整。
本例将同层相加和分层相乘分别演算,计算途中保留精确数值,最后统一向下取整。对照的目的是识别机制,不能推断所有游戏都采用其中一种。
逐步演算
基础值59:同层相加得到精确值1711/25,最终取整为68;分层相乘得到精确值137529/2000,最终取整为68,相差0。
基础值151:同层相加得到精确值4379/25,最终取整为175;分层相乘得到精确值351981/2000,最终取整为175,相差0。
基础值112:同层相加得到精确值3248/25,最终取整为129;分层相乘得到精确值16317/125,最终取整为130,相差1。
基础值140:同层相加得到精确值812/5,最终取整为162;分层相乘得到精确值16317/100,最终取整为163,相差1。
基础值43:同层相加得到精确值1247/25,最终取整为49;分层相乘得到精确值100233/2000,最终取整为50,相差1。
基础值144:同层相加得到精确值4176/25,最终取整为167;分层相乘得到精确值20979/125,最终取整为167,相差0。
结果与交叉核对
同层结果依次为68,175,129,162,49,167;分层结果依次为68,175,130,163,50,167。
未取整前,分层比同层多出的比例是11%乘5%=11/20%。两版差异来自交叉项;各次差值还会受最后取整影响,不一定完全按整数比例变化。
自己怎样练习
自己复核时,可以把纸分成“操作前状态、这一条输入、操作后状态”三栏。先遮住解答完成一遍,再只查找第一次出现分歧的位置;后面的错误往往只是前一步状态传递的结果。确认规则没有改变后,再重新继续,避免只改最终答案却保留中间错误。
第二轮练习只改一条输入,提前写下你预计哪些后续步骤会变化,再重新演算验证。不要同时更改多个条件,否则很难分清是哪条规则造成差别。若实际游戏还涉及随机结果、其他角色、装备或额外判定,应先把这些条件补入记录,本例不会替它们作假设。
