端数の扱い

水曜日の日記で、MP自然回復について、計算上の値と表示上の値で0.1ずれていると書いたけれど、このずれの理由が分かった。端数処理の関係だった。せっかくなので、 他の状況についても端数の丸め処理について調べてみる。


古代語 湧き上がる

湧き上がるLv.11ではMP自然回復 2.5と表示されているけれど、内部的には

2.46という値を持っている。2.5という値は、これを四捨五入したものだった。

実際、手袋を外した状態で詳細を表示させるとこうなる。

f:id:ochanikki:20160924204337p:plain


古代語の所には、+2.5と書かれているけれど、装備後のステータス変化の所では
2.46となってる。湧き上がるを二つ付けると、2.46+2.46=4.92となり、四捨五入して4.9。これが、2.5+2.5で5.0にならず、4.9になるからくりだった。

じつは、このことはここにも書かれていた。

ロードス島戦記オンラインwiki @ギムのとこ - アイテム/付与魔術/古代語一覧

このページによると上昇量はこうなるらしい。

湧き上がる
Lv. 1 2 3 4 5 6 7 8 9 10 11 12 13
表示 0.3 0.5 0.7 0.9 1.1 1.4 1.6 1.8 2.0 2.2 2.5 2.7 2.9
内部 0.26 0.48 0.7 0.92 1.14 1.36 1.58 1.8 2.02 2.24 2.46 2.68 2.9

(Lv. 11までは自分でも確認)

MP消費量は切り上げ

スキルのMP消費量の端数は、表示上では切り上げされる。例えば、スキル消費MP減を10% 20% …と減らしながら、キュアのMP消費量を表示させるとこうなる。

消費MP減 0% 10% 20% 30% 40% 50%
表示上の値 8 8 7 6 5 4
本来の値 8 7.2 6.4 5.6 4.8 4

メンタルリカバリーの表示は切り下げ

メンタルリカバリーは1秒毎に最大MPの15%を回復する。例えば、最大MPが673のときにメンタルリカバリーを使うと、100.95ずつ回復するはず(673*0.15=100.95)。しかし、このとき頭の上に表示される回復量(青い数字)は100となる。つまり、切り下げで表示されている。

また、実際のMPの増加の様子は次の通り。 (途中で自然回復14が挟まっている)

101 101 14 101 101 101

表示上は100であっても、内部的には100.95ずつ回復していることが見てとれる。

まとめ

おそらく次のようなルールで丸め処理が行われていると推測できる。

  • 消費するものは、切り上げ表示。 (内部ではきちんと端数も扱っている)
  • 獲得するものは、切り下げ表示。(内部ではきちんと端数も扱っている)
  • 古代語は、四捨五入して表示。(内部ではきちんと端数も扱っている、内部の値は「装備後のステータス変化」で分かる)