VRコントローラーのtransform.Positionの各値を小数点第1位までにして変数に入れたい。
コントローラーなのでPositionの値はめっちゃ動くし小数点何位までなのか分からない。
小数点以下の桁数を指定して丸めることはできない
桁数を指定して丸めることはできないらしい
しかし小数点以下の任意の場所を切り捨てる関数はUnityに存在していません(たぶん)(12.345 を 12.3 にしたい等)そうなると多くの場合計算を駆使して実現しようとするはずです例えば次のような感じ-------------------------------// 0.31 を 0.3 にしたい場合(小数点第一以下切り捨ての例)s2 = 0.31f;s2 = s2 * 10; //←0.31 を 一時的に10倍にし 3.1 にする
s2 = Mathf.Floor(s2) / 10; //←3.1 の .1 部分をFloorで切り捨て 3 にし//その後10で割る事で 0.3 になり目的達成
-------------------------------
このように小数点の位置を掛け算でずらして処理するやり方はC言語をはじめ、色々なところで使われています
だそうです。
でもfloatが何桁か分からないときは使いにくいですね;;
しょうがないのかな?
とりあえず2桁落とすようにした
うんこみたいなコードな気もするけどこれでできている?のかな?
textとして表示する場合
textとして表示するだけなら
x.ToString("N2")
でできる。
N2じゃなくてf2でもいい?何が違うんだ???
ここに書いてたけど、よくわからない
F:必要に応じて負の符号が付く整数と小数
N:必要に応じて負の符号が付く整数と小数、桁区切り記号、および小数点記号。
ToString()をfloatに戻す
ToStringの使い勝手が良さそうなのでいったんToStringで桁を指定してから、floatに戻すことにします。
というか一番上の記事でもそうしてた。
これでよいのだろうか?debug表示してないので確かめてない;;