ティラノスクリプトで小数点以下を扱う。四捨五入など
ダメージ計算などで 1*1.2 などの計算をした場合、1.2が表示されるのではなく、
浮動小数点のせいで1.2に近いすごい桁数の1.2000000~という小数点以下が表示されてしまいます。
ゲームで扱うには小数点以下を四捨五入なり切り捨てなりして、1.2などの分かりやすい桁数にしたいところです。
wikiなどをざっと拝見した感じでは、小数点以下を切り捨てして1などにする方法(javascriptのMath.floorを使う)はあるのですが、小数点以下を何桁か使って1.2や1.20などにする方法がよく分かりません。
javascriptを調べました。
.toFixed()を使う方法。四捨五入して、()内の数で桁数をそろえます。
[eval exp="f.number = 17.2545"]
[iscript]
f.number = f.number.toFixed(1)
[endscript][emb exp=f.number]
この方法は、桁数が指定なので0が0.0などになります。 0を0にしたい場合は、以下のMath.roundを使います。
Math.roundを使う方法
四捨五入して、桁数をそろえます。
[eval exp="f.number = 17.2545"]
[iscript]
f.number = Math.round(f.number * 10) / 10
[endscript][emb exp=f.number]
Math.round(f.number * 10) / 10のところをMath.round(f.number * 100) / 100にすると小数点以下の桁数が増えます。
Math.round(f.number)で1の位で四捨五入。
Math.round(f.number / 10) * 10で、10の位で四捨五入
その他。Math.ceilで切り上げ
[eval exp="f.number = 17.2545"]
[iscript]
f.number = Math.ceil(f.number * 10) / 10
[endscript][emb exp=f.number]
Math.floorで切り捨て
[eval exp="f.number = 17.2545"]
[iscript]
f.number = Math.floor(f.number * 10) / 10
[endscript][emb exp=f.number]
なお、自分はjavascriptは詳しくないので、この記事のスクリプトは正しいのかどうかは分かりません。
一応動きますが、完全に自分用の備忘録です。ご注意ください。