MP表示の丸め処理

MPの残量は、内部的には端数でもっているはずだけれど、表示上は常に整数値になっている。ここで使われる丸め処理が何なのか調べてみる。

実験

最大MPを決める計算式は過去に調べた。

最大MP(昨日の分析) - お茶の国 プリ日記 ロードス島 調査兵団

この結果から「基本最大MP+?%」が0なら、最大MPは内部的にも整数値になる。
Lv=85、精神 13だと基本最大MPは

(65+2*85)*(1+0.05*13)=387.75 の四捨五入で388となる。

ここから、基本最大MP+0%で、最大MP+446だと、388+446=834となる。
なので、最大MPは計算上834で、実際にも834になっていた。この値は、端数なしでぴったり834。

ここで、MP消費減30%でファストキュアLv24を打ってみる。
デフォルトのMP消費は19なので、実際の消費量は、19*0.7=13.3。

ファストキュアを3回打ったときのMPの変化がこちら。

834 → 820 → 807 → 794

MPの減少量だけ見ると, 14, 13, 13となっている。つまり、内部的には13.3ずつ減っているはずと考えられる。そして、そう考えて、内部値と表示値を比べると

834 820 807 794
834 820.7 807.4 794.1

となり、MP表示の丸め処理は切り捨てと分かる。
さらに、最大MPの計算式が四捨五入だったことを考えると、最大MPは常に端数なしで整数値なことも分かる。

結論

まとめると

MPが最大のときは端数なしで常に整数値
MPが最大でないときは、内部的には端数を持っており、切り捨てた値が表示される。

という事が分かる。このことが分かると、おまけ回復の量を測定するのがとても簡単になるのだけれど、その辺の話はまた後日。