MRが楽しい

MRやVRについて学習したことを書き残す

Unityで小数点以下の桁数を指定して数値を文字列表示する

本日はUnityの小ネタ枠です。
Unityで小数点以下の桁数を指定して数値を文字列表示する方法についてです。

小数点以下の桁数を指定して数値を文字列表示する

小数点以下の桁数を指定して数値を文字列表示するにはToStringでフォーマットを指定することで可能です。

float value = 1.234f;
string text = value.ToString("F2", CultureInfo.CurrentCulture);

上記の場合、指定した桁数までのは必ず表示されるので、値が 1 の場合でも 1.00 のように表示されます。
Unity バージョン 2021.1以降では TrimEnd 関数でstring型が指定できるので、さらに以下のように記述することで不要な少数点以下を省略することもできます。

string text = value.ToString("F2", CultureInfo.CurrentCulture).TrimEnd("0").TrimEnd(".0");

サンプルスクリプト

サンプルスクリプトを作成して動作を確認してみます。
・FloatingPointTest.cs

using System.Globalization;
using TMPro;
using Unity.VisualScripting;
using UnityEngine;

public class FloatingPointTest : MonoBehaviour
{
    [SerializeField] TMP_Text _text1;
    [SerializeField] TMP_Text _text2;
    [SerializeField] TMP_Text _text3;
    [SerializeField] TMP_Text _text4;
    
    void Start()
    {
        float value = 1.234f;
        _text1.text = GetFloatString(value);
        _text2.text = GetFloatString(value * 10.0f);
        _text3.text = GetFloatString(value * 100.0f);
        _text4.text = GetFloatString(value * 1000.0f);
    }
    
    private string GetFloatString(float value)
    {
        // 少数以下がある場合は小数点第2位まで表示する
        string text = value.ToString("F2", CultureInfo.CurrentCulture).TrimEnd("0").TrimEnd(".0");
        return text;
    }
}

以下の通り少数以下がある場合は小数点第2位まで表示され、小数点の以下が0詰めされている部分は省略されて表示されました。