就近取整

来自PRTS
跳转到导航 跳转到搜索

由于《明日方舟》使用Unity引擎编写,其有多处使用了Unity核心库中的Mathf结构函数对小数(浮点数,Float类型)进行取整处理,包括:

  • Mathf.Floor(x) 向下取整(返回小于等于x的最大整数)
  • Mathf.Ceil(x) 向上取整(返回大于等于x的最小整数)
  • Mathf.Round(x) 就近取整

其中“就近取整”并非常见的“四舍五入”,而是“四舍六入五成双”(采用.NET中的MidpointRounding.ToEven规则)。

对于x的小数部分xf(此时0≤xf<1):

  • 当 xf>0.5 时,x向上取整。
例:7.6 → 8,9.72 → 10
  • 当 xf<0.5 时,x向下取整。
例:7.4 → 7,4.4999 → 4
  • 当 xf=0.5 时,返回x两边整数中的偶数
例:7.5 → 8,6.5 → 6,1999.5 → 2000

当站内提及“就近取整”时,通常就指的是这样的取整方式。

例如:在集成战略探索者的银凇止境中,将所有文化比较研究完成后可以令干员在高难度(9+)情况下获得累积+23%的攻击力与防御力加成,该加成以符文的形式写入。

已知,符文加成后干员的数据将就近取整,则:

  • 招募1星干员THRM-EX(30级,满信赖)的情况下,其原本攻击力为350。
加成后,攻击力变为430(350 × 1.23 = 430.5 → 430)。
  • 招募2星干员12F(30级)的情况下,其原本防御力为50。
加成后,防御力变为62(50 × 1.23 = 61.5 → 62)。