本篇用一份独立的虚构游戏记录练习百分比效果与结算顺序。先按规则预测最后状态,再逐行对照运算,可以找出差异究竟来自输入、边界条件,还是结算先后。下面所有数值都只服务于这一道练习。
先读清楚本例规则
效果甲增加45%,乙增加11%。版本一同层相加,基础值乘(1+45%+11%);版本二分层相乘,基础值乘(1+45%)再乘(1+11%)。只在全部计算结束后向下取整。
待测基础值:108,55,135,85,146,152
为何这样记录
两种百分比效果究竟相加还是分层相乘,要由规则决定。单看界面上的两个百分数,无法判断最后数值;还需要知道在哪一步取整。
本例将同层相加和分层相乘分别演算,计算途中保留精确数值,最后统一向下取整。对照的目的是识别机制,不能推断所有游戏都采用其中一种。
逐步演算
基础值108:同层相加得到精确值4212/25,最终取整为168;分层相乘得到精确值86913/500,最终取整为173,相差5。
基础值55:同层相加得到精确值429/5,最终取整为85;分层相乘得到精确值35409/400,最终取整为88,相差3。
基础值135:同层相加得到精确值1053/5,最终取整为210;分层相乘得到精确值86913/400,最终取整为217,相差7。
基础值85:同层相加得到精确值663/5,最终取整为132;分层相乘得到精确值54723/400,最终取整为136,相差4。
基础值146:同层相加得到精确值5694/25,最终取整为227;分层相乘得到精确值234987/1000,最终取整为234,相差7。
基础值152:同层相加得到精确值5928/25,最终取整为237;分层相乘得到精确值61161/250,最终取整为244,相差7。
结果与交叉核对
同层结果依次为168,85,210,132,227,237;分层结果依次为173,88,217,136,234,244。
未取整前,分层比同层多出的比例是45%乘11%=99/20%。两版差异来自交叉项;各次差值还会受最后取整影响,不一定完全按整数比例变化。
自己怎样练习
自己复核时,可以把纸分成“操作前状态、这一条输入、操作后状态”三栏。先遮住解答完成一遍,再只查找第一次出现分歧的位置;后面的错误往往只是前一步状态传递的结果。确认规则没有改变后,再重新继续,避免只改最终答案却保留中间错误。
第二轮练习只改一条输入,提前写下你预计哪些后续步骤会变化,再重新演算验证。不要同时更改多个条件,否则很难分清是哪条规则造成差别。若实际游戏还涉及随机结果、其他角色、装备或额外判定,应先把这些条件补入记录,本例不会替它们作假设。