オーバーフローが21.47mと聞いて Show more
2の乗数で似た数字探したら2^31が2,147,483,648だった
100倍違うけど、実は小数点2桁まであって100倍値で計算してたらありえそう。。
31乗ってのも、符号付32bit(4byte)と考えると納得だし🤔
@mameta0824 長文失礼します!
多分ですけどダメージは整数でしか計算してないので1 / 100が最大値になるんだと思います。
例)ダメージ倍率123%のスキル
計算式=攻撃力 × 123 ÷ 100
となっていて、計算途中の攻撃力 × 123で2.147Gを超えてしまうとその時点でオーバーフローが発生しダメージがなくなってしまう(実際はダメージがマイナスになっている)
逆に、攻撃力 × 123で2.147Gを超えていないとその後に ÷ 100 の部分が計算されるのでダメージは21.47M以下になってしまう
こんな感じだと思います
ラグナロクオンラインユーザ向けのMastodonインスタンス。
オーバーフローが21.47mと聞いて
@mameta0824
長文失礼します!
多分ですけどダメージは整数でしか計算してないので1 / 100が最大値になるんだと思います。
例)ダメージ倍率123%のスキル
計算式=攻撃力 × 123 ÷ 100
となっていて、計算途中の
攻撃力 × 123
で2.147Gを超えてしまうと
その時点でオーバーフローが発生しダメージがなくなってしまう
(実際はダメージがマイナスになっている)
逆に、
攻撃力 × 123
で2.147Gを超えていないと
その後に ÷ 100 の部分が計算されるので
ダメージは21.47M以下になってしまう
こんな感じだと思います