Menu
CoddyTech

Les nombres décimaux ont besoin d’un f

Fait partie de la section Les bases du scripting dans Unity du Journey Unity de Coddy. Leçon 3 sur 85.

Les nombres entiers ne suffisent pas pour un jeu : un ballon flotte à 3.5, un joueur court à 4.2 unités par seconde. Les nombres avec une virgule ont leur propre type, float :

float speed = 4.2f;

Remarque le f à la fin. En C#, un simple 4.2 est un double, un autre type décimal, et les positions et les tailles dans Unity sont des flottants. Le f indique à C# que le nombre est un flottant. Oublie-le et Unity refuse de démarrer le jeu, avec cette erreur dans la Console :

error CS0664: Literal of type double cannot be implicitly converted to type 'float'; use an 'F' suffix to create a literal of this type

Ça a l’air inquiétant, mais cela signifie simplement « ajoute le f ». Un nombre entier comme 2 n’a pas besoin de f : il tient dans un flottant tel quel.

Autre surprise : la division de deux int ne conserve que la partie entière, donc 7 / 2 vaut 3. Écris 7 / 2f pour obtenir 3.5.

challenge icon

Défi

Facile

Corrige le script du ballon, puis fais-le flotter plus haut et grossir.

  1. Appuie sur « Jouer » : la Console affiche l’erreur CS0664 sur la ligne height.
  2. Remplace cette ligne par float height = 3.5f;.
  3. Remplace la ligne de taille par float size = 1.5f;. Chaque nombre avec un point décimal doit être suivi de f.

Appuie sur « Jouer » : le ballon flotte à 3.5 et mesure une fois et demie sa taille initiale. Puis appuie sur « Vérifier ».

Essayez vous-même

using UnityEngine;

public class Balloon : MonoBehaviour
{
    void Start()
    {
        float height = 2.5;
        float size = 1;

        transform.position = new Vector3(0, height, 0);
        transform.localScale = new Vector3(size, size, size);
    }
}

Toutes les leçons de Les bases du scripting dans Unity

Entraînez-vous par vous-même : Playground Unity