小数の切り捨て・切り上げ・四捨五入に関して、同僚から質問があったのでググってみたんですが、情報が全然見つからないので自分で記事を書いてみました!
PlayMakerで小数の切り下げ・切り上げ・四捨五入がしたい!
いったん桁を指定するのは忘れて、小数を 切り下げ
や 切り上げ
で整数に変換できないか調べます。
ずばり、 Convert Float To Int
を使えばできます!
これは Float
を Int
に変換するアクションですが、その際に Rounding
で 切り下げ
切り上げ
等を指定できます。
Rounding
の意味は以下の通りです。
Rounding | 意味 |
---|---|
Round Down | 切り下げ |
Round Up | 切り上げ |
Nearest | 四捨五入 |
ちなみに、 Round Down
は小数 切り捨て
ではなく 切り下げ
なので、ご注意ください。
切り捨てと切り下げはマイナスの値のときに違いがでます。
入力値 | 切り捨て | 切り下げ |
---|---|---|
12.3 | 12 | 12 |
-12.3 | -12 | -13 |
小数の桁数を指定して切り下げ・切り上げ・四捨五入がしたい!
いよいよ桁を指定する方法を紹介します!
Convert Float To Int
アクションを応用すれば、小数の桁数を指定できます!
たとえば、小数第三位まで残し、第四位以降は切り下げしたい場合、以下の図のようにアクションを組み立てればよいです。
12.34567
という入力を 12.345
に変換できました!
上記の処理をC#風に表現するとこんな感じです。
// 入力
float inputFloat = 12.34567;
int decimalScale = 1000;
// 1000倍にする
float scaledFloat = inputFloat * decimalScale;
// int型に変換する。その際に小数を切り下げる。
int roundedInt = (int)scaledFloat;
// 1000分の1倍にする
float outputFloat = (float)roundedInt / decimalScale;
桁数は DecimalScale
で指定しています。以下のように10のべき乗で指定します。
DecimalScale |
桁数 |
---|---|
10 | 1 |
100 | 2 |
1000 | 3 |
10000 | 4 |
... | ... |
0の数がそのまま桁数になるイメージです。
Convert Float To Int
アクションの Rounding
をいじれば、 切り上げ
や 四捨五入
にも対応できます!
さいごに
本記事作成にあたり、以下のページを参考にしました!ありがとうございました!