読者です 読者をやめる 読者になる 読者になる

テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

数値のカンマ付与と小数点の丸め

Unity

Unityは.NETのFormat系が使えるので、数値にカンマを付けた物を表示したい場合はToString("N3")のように書けばよいらしい。

このNはカンマを付与するフォーマットで、桁数を指定しない場合は小数点2桁まで表示する。もし桁を表示したくない場合は、 N0 のように書けば良い。

3434.343f.ToString("N3")

  • > 3,434.343

3434.343f.ToString("N0");

  • > 3,434

また、0埋めが不要な場合は、ToString("#,0.###") みたいに記述すると、カンマを表示しつつ不要な桁を省略してくれる。

3434.343f.ToString("#,0.###")

  • > 3,434.343

3434.2f.ToString("#,0.###")

  • > 3,434.2

書式を指定して数値を文字列に変換する(DOBON.NET プログラミング道)
http://dobon.net/vb/dotnet/string/inttostring.html


■数値の丸め

Unityのサンプルでは小数点を扱う際、多くの場合は "00000.00f" といったフォーマットで記述される。これは単純に対象の数値はfloatであるといった事を表している。JavaScriptではこの記述を省略するとfloat型になる。

ここで1点注意すべき事がある。floatは7桁までしか表現できないので、整数の数字が増えていくと下の桁をどんどん消していく点だ。具体的には、下のような数値は表現される数値と記述した数値が異なる。

12345.6789f.ToString("N4")
→12,345.6800

こういった場合、doubleを使う事で多少緩和できる(doubleは15桁まで表現出来る為)。ただし、逆を言えばdoubleも15桁までしか表現できないので、floatやdoubleで=(イコール)の表現を使うのは避けたほうが無難かもしれない。

ちなみにdoubleの場合は、下のように書く。

12345.6789d.ToString("N4")
→12,345.6789

浮動小数点数型と誤差
http://www.cc.kyoto-su.ac.jp/~yamada/programming/float.html