就近取整
由于《明日方舟》使用Unity引擎编写,其有多处使用了Unity核心库中的Mathf结构函数对小数(浮点数,Float类型)进行取整处理,包括:
Mathf.Floor(x)向下取整(返回小于等于 \(x\) 的最大整数)Mathf.Ceil(x)向上取整(返回大于等于 \(x\) 的最小整数)Mathf.Round(x)就近取整
其中“就近取整”并非常见的“四舍五入”,而是“四舍六入五成双”(采用.NET中的MidpointRounding.ToEven规则)。
对于 \(x\) 的小数部分 \(x_f\)(此时 \(0\le x_f<1\)):
- 当 \(x_f>0.5\) 时,\(x\) 向上取整。
- 例:\(7.6\to 8\),\(9.72\to 10\)
- 当 \(x_f<0.5\) 时,\(x\) 向下取整。
- 例:\(7.4\to 7\),\(4.4999\to 4\)
- 当 \(x_f=0.5\) 时,返回 \(x\) 两边整数中的偶数
- 例:\(7.5\to 8\),\(6.5\to 6\),\(1999.5\to 2000\)
当站内提及“就近取整”时,通常就指的是这样的取整方式。
例如:在集成战略探索者的银凇止境中,将所有文化比较研究完成后可以令干员在高难度(9+)情况下获得累积+23%的攻击力与防御力加成,该加成以符文的形式写入。
已知,符文加成后干员的数据将就近取整,则:
- 招募1星干员THRM-EX(30级,满信赖)的情况下,其原本攻击力为350。
- 加成后,攻击力变为430(\(350\times 1.23=430.5\to \mathbf{430}\))。
- 招募2星干员12F(30级)的情况下,其原本防御力为50。
- 加成后,防御力变为62(\(50\times 1.23=61.5\to \mathbf{62}\))。