フワフワソが「ソラとピヨちゃん」や「宮本県」を作るブログ(フワフワソ・ラウンジnew!)

ラノベとテクノを愛するふわふわがノベルゲームを作っています。あと日常のことやイベントの告知なども。スクリプト関連の記事は自分用の備忘録です

ティラノスクリプトで小数点以下を扱う。四捨五入など

ダメージ計算などで 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は詳しくないので、この記事のスクリプトは正しいのかどうかは分かりません。

一応動きますが、完全に自分用の備忘録です。ご注意ください。