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