端数の扱い
水曜日の日記で、MP自然回復について、計算上の値と表示上の値で0.1ずれていると書いたけれど、このずれの理由が分かった。端数処理の関係だった。せっかくなので、 他の状況についても端数の丸め処理について調べてみる。
古代語 湧き上がる
湧き上がるLv.11ではMP自然回復 2.5と表示されているけれど、内部的には
2.46という値を持っている。2.5という値は、これを四捨五入したものだった。
実際、手袋を外した状態で詳細を表示させるとこうなる。
古代語の所には、+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ずつ回復していることが見てとれる。
まとめ
おそらく次のようなルールで丸め処理が行われていると推測できる。
- 消費するものは、切り上げ表示。 (内部ではきちんと端数も扱っている)
- 獲得するものは、切り下げ表示。(内部ではきちんと端数も扱っている)
- 古代語は、四捨五入して表示。(内部ではきちんと端数も扱っている、内部の値は「装備後のステータス変化」で分かる)