Unity float to int

Conversion d’un float en int dans Unity

Dans Unity, la conversion d’un nombre à virgule flottante (float) en un entier (int) est une opération courante et peut être effectuée de plusieurs manières.

Cet article vous guidera à travers les différentes fonctions à utiliser pour cette conversion en fonction de votre cas d’utilisation.

Pour aider à la lecture de notre article nous allons remplacer le terme « nombre à virgule flottante » par sa version anglaise « float ».

Table des matières

Float to int vers l’entier le plus petit

Pour convertir un float en l’entier le plus petit, vous avez deux options : vous pouvez effectuer une conversion directe (cast) en int ou utiliser la méthode « ToInt32 » de la classe Convert.

Selon vos besoins, vous pouvez également utiliser « ToInt64 » ou « ToInt16 ».

using System;
using UnityEngine;

public class ConvertBehaviour : MonoBehaviour
{
    public int CastConvert(float value)
    {
        return (int)value;
    }

    public int SystemConvert(float value)
    {
        return Convert.ToInt32(value);
    }

    private void Start()
    {
        Debug.Log(CastConvert(0.5f)); // 0
        Debug.Log(CastConvert(0.6f)); // 0
        Debug.Log(CastConvert(2f));   // 2
        Debug.Log(CastConvert(2.1f)); // 2
    }
}
    

Conversion vers l’entier le plus grand

Pour convertir un float en l’entier le plus grand, vous pouvez utiliser la méthode CeilToInt de la classe Mathf.

using UnityEngine;

public class ConvertBehaviour : MonoBehaviour
{
    public int CeilToIntConvert(float value)
    {
        return Mathf.CeilToInt(value);
    }

    private void Start()
    {
        Debug.Log(CeilToIntConvert(0.5f)); // 1
        Debug.Log(CeilToIntConvert(0.6f)); // 1
        Debug.Log(CeilToIntConvert(2f));   // 2
        Debug.Log(CeilToIntConvert(2.1f)); // 3
    }
}
    

Conversion vers l’entier le plus proche

Pour convertir un float en l’entier le plus proche, vous pouvez utiliser la méthode RoundToInt de la classe Mathf.

Faites attention, si le nombre se termine par .5, donc s’il est à mi-chemin entre deux entiers, l’un pair et l’autre impair, le nombre pair est renvoyé.

using UnityEngine;

public class ConvertBehaviour : MonoBehaviour
{
    public int RoundConvert(float value)
    {
        return Mathf.RoundToInt(value);
    }

    private void Start()
    {
        Debug.Log(RoundConvert(0.5f)); // 0
        Debug.Log(RoundConvert(0.6f)); // 1
        Debug.Log(RoundConvert(2f));   // 2
        Debug.Log(RoundConvert(2.1f)); // 2
        Debug.Log(RoundConvert(7.5f)); // 8
    }
}
    

Float to int pour un affichage

Pour convertir un float en un int à utiliser comme une chaîne de caractères, vous pouvez simplement appeler la méthode ToString et spécifier le format « 0 ».

Soyez conscient que cela fonctionnera comme la fonction de l’arrondi, sauf que lorsque le nombre est à mi-chemin entre les deux entiers, il renverra toujours le plus grand.

Consultez la documentation : Le spécificateur personnalisé « 0 »

using UnityEngine;

public class ConvertBehaviour : MonoBehaviour
{
    public string ToStringConvert(float value)
    {
        return value.ToString("0");
    }

    private void Start()
    {
        Debug.Log(ToStringConvert(0.5f)); // "1"
        Debug.Log(ToStringConvert(0.6f)); // "1"
        Debug.Log(ToStringConvert(2f));   // "2"
        Debug.Log(ToStringConvert(2.1f)); // "2"
    }
}
    

Je vous laisse également la documentation complète sur les formats ToString.

Si vous avez encore des cas d’utilisation à résoudre, vous voudrez peut-être vous tourner vers la classe « Math », qui propose une méthode « Round » avec plus de paramètres que celle d’Unity.

Il est également possible d’effectuer l’opération inverse : int to float.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *