【Unity】型変換　string→int　string→float　float→int　int→桁数指定してstring

#環境
Unity 2019.3.7f1

#はじめに
私がよく使う型変換
**・string→int
・string→float
・float→int
・int→桁数指定してstring**
をまとめました。(覚えられない)

#方法
**・string→int**
int型の変数 = int.Parse("数字の文字") 

**・string→float**
float型の変数 = float.Parse("数字の文字")

**・float→int**
float→intに関しては2種類あります。

－(int)を使う－
int型の変数 = (int)数値　
小数点以下は切り捨てになります。

－Mathfを使用した変換－
切り上げ：　int型の変数 = Mathf.CeilToInt(数値); 
切捨て　：　int型の変数 = Mathf.FloorToInt(数値); 
四捨五入：　int型の変数 = Mathf.RoundToInt(数値);
RoundToIntに関して、
小数点が5の場合、偶数に近い方に変換されるため注意！

**・int→桁数指定してstring**
string型の変数 = 数値.ToString("000")
0の数で桁数が決まります。

#具体例
###**・string→int**
文字列の100をint型に変換後、計算できるか確認するため1を足してます。

```CSharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class test : MonoBehaviour
{
    private int a;//int型の変数aを宣言
    
    void Start()
    {
        a = int.Parse("100");//文字列100を数値に変換し変数aに代入
        a = a + 1;//変数aに1を足してみる
        Debug.Log("a="+a);//コンソールに表示
    }
}

```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613985/44655ce9-7275-a609-d2c1-07c29ed2a60a.png)

###**・string→float**
文字列の1.111をfloat型に変換後、計算できるか確認するため1を足しています。
変換する文字列に「f」はつけないことに注意！！

```CSharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class test : MonoBehaviour
{
    private float a;//float型の変数aを宣言
    
    void Start()
    {
        a = float.Parse("1.111");//文字列1.111を数値に変換し変数aに代入
        a = a + 0.1f;//変数aに0.1を足してみる
        Debug.Log("a="+a);//コンソールに表示
    }
}
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613985/0bdc9da6-73df-b090-6baa-2aadd253e61e.png)

###**・float→int**
#####－(int)を使う－
1.9999をint型に変換します。

```CSharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class test : MonoBehaviour
{
    private int a;//int型の変数aを宣言
    
    void Start()
    {
        a = (int)1.9999f;//1.9999をint型に変換し変数aに代入
        Debug.Log("a="+a);//コンソールに表示
    }
}
```
小数点以下は切り捨てられ1になりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613985/82406324-513d-3897-66a6-a29540f77b36.png)


#####－Mathfを使用した変換－
切り捨て、切り上げ、四捨五入がありますが、
代表して一番ややこしい四捨五入を行います。
なにがややこしいかというと、小数点が0.5の時、**偶数に近いほうに変換されます。**
これはもう"四捨五入ではないなにか"です。
1.1、1.5,　1.9、2.1,　2.5,　2.9で処理してみましょう。

```CSharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class test : MonoBehaviour
{
    private int a;//int型の変数aを宣言
    private int b;//int型の変数bを宣言
    private int c;//int型の変数cを宣言
    private int d;//int型の変数dを宣言
    private int e;//int型の変数eを宣言
    private int f;//int型の変数fを宣言

    void Start()
    {        
        a = Mathf.RoundToInt(1.1f);//1.1を四捨五入しint型に変換
        b = Mathf.RoundToInt(1.5f);//1.5を四捨五入しint型に変換
        c = Mathf.RoundToInt(1.9f);//1.9を四捨五入しint型に変換
        d = Mathf.RoundToInt(2.1f);//2.1を四捨五入しint型に変換
        e = Mathf.RoundToInt(2.5f);//2.5を四捨五入しint型に変換　計算結果注意
        f = Mathf.RoundToInt(2.9f);//2.9を四捨五入しint型に変換

        Debug.Log("a=" + a);//コンソールに表示
        Debug.Log("b=" + b);//コンソールに表示
        Debug.Log("c=" + c);//コンソールに表示
        Debug.Log("d=" + d);//コンソールに表示
        Debug.Log("e=" + e);//コンソールに表示
        Debug.Log("f=" + f);//コンソールに表示
    }
}
```
　
2.5の処理結果e=をみると2となっています。
このように私たちの感覚では2.5を四捨五入すると3になりますが、
偶数に近い側の2に変換されてしまいます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613985/06244a89-48cd-d8f5-50cc-13dd2399242e.png)


###**・int→桁数指定してstring**
10を三桁の文字列に変換します。

```CSharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class test4 : MonoBehaviour
{
    private string a;//string型の変数aを宣言

    void Start()
    {        
        a = 10.ToString("000");//数値を桁数指定で文字列に変換
        Debug.Log("a=" + a);//コンソールに表示
    }
}
```
　
010の文字列となりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613985/3c2c754a-c9ec-d981-3a04-5915c893d51c.png)

#おわりに
・文字列から数値はParse
・floatからintはMathfを確認
・数値から桁数指定はToString
くらいの感じで覚えておけばすぐ対応できそうですね。