Partage
  • Partager sur Facebook
  • Partager sur Twitter

Nombre à virgules infini

    13 juin 2020 à 22:52:51

    Salut la team,

    quand je fais une opération tel que 70 / 30 le résultat est automatiquement représentée en entier (2 pour l'exemple là),  y aurait t-il une solution pour ça ?

    decimal nbr = 70 / 30;
    //Il contient 2...



    Merci d'avance !:lol:

    • Partager sur Facebook
    • Partager sur Twitter
      14 juin 2020 à 12:47:33

      Salut ! Si tu divise un entier par un entier, le résultat sera en entier ! 

      Plusieurs solutions :

      double nbr = 70d / 30;

      Ou bien : 

                  decimal val_1 = 70;
                  decimal val_2 = 30;
                  decimal nbr = val_1 / val_2;

      Ou alors : 

                  double nbr = 70.0 / 30.0;
      




      • Partager sur Facebook
      • Partager sur Twitter
        18 juin 2020 à 11:39:47

        Ah merci !!!

        Donc cela veut dire que je dois faire 70d en assignant à une variable double, decimal... (autre que int ou uint...)?

        Comment on fait du coup pour le remettre en int ?:D

        • Partager sur Facebook
        • Partager sur Twitter
          18 juin 2020 à 11:56:26

          Salut,

          Je tiens juste à mettre un point de précision sur ton calcul. S'il nécessite d'être précis ou non, cela demande différents type.

          Je cite barcelar dans un autre post:

          "Bien plus que la taille, c'est le temps de traitement des opérations sur ces différents types qui les distingues.
          Float = peu précis, peu d'espace en mémoire, vitesse d'opération très rapide
          Double = moyen partout
          Décimal = très précis, beaucoup d'espace en mémoire, vitesse d'opération très très lente."

          Ensuite je ne vois pas l'utilité de commencer ton calcul avec des doubles pour finir à le mettre en int.

          Sinon la fonction est :

          Convert.ToInt32(val);  

          Mais tu perds en information si le nombre est à virgule.

          • Partager sur Facebook
          • Partager sur Twitter

          Un bon dev est un dev qui sait Googler

            21 juin 2020 à 17:48:43

            Merci Flingouin, en faite en ce moment je suis sur un projet qui s'intitule "Le jeu dont vous êtes le héros". Comme je pense tu l'as deviné, c'est un jeu interactif qui change l'histoire en fonction des choix que tu fais...

            Et pour cela j'ai introduit un système d'attaque... mais qu'avec les nombres qui se mettent directement en int le résultat est totalement différent !!!

            int systAtk = (70 / 30) * 50;
            //SysAtk est égal à 100 (70 / 30 = 2, 2 * 50 = 100)
            float sysAtk2 = (70.0 / 30.0) * 50;
            //SysAtk2 est normalement égal à environ 116 et des brouettes

            Comme ça je le transforme en int en enlevant les virgules et mon résultat sera plus précis...

            Comme tu m'as dit :

            Convert.ToInt32(val);

            Si tu n'as pas tout compris je peux te donner un extrait de ma solution si tu veux.

            Merci en tout cas;).

            Flingouin a écrit:

            Salut,

            Je tiens juste à mettre un point de précision sur ton calcul. S'il nécessite d'être précis ou non, cela demande différents type.

            Je cite barcelar dans un autre post:

            "Bien plus que la taille, c'est le temps de traitement des opérations sur ces différents types qui les distingues.
            Float = peu précis, peu d'espace en mémoire, vitesse d'opération très rapide
            Double = moyen partout
            Décimal = très précis, beaucoup d'espace en mémoire, vitesse d'opération très très lente."

            Ensuite je ne vois pas l'utilité de commencer ton calcul avec des doubles pour finir à le mettre en int.

            Sinon la fonction est :

            Convert.ToInt32(val);  

            Mais tu perds en information si le nombre est à virgule.



            • Partager sur Facebook
            • Partager sur Twitter
              22 juillet 2020 à 10:59:23

              et en changeant l'ordre de l'opération en (70*50)/30 ça devrait aussi être bon et éviter des conversions
              • Partager sur Facebook
              • Partager sur Twitter

              Nombre à virgules infini

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown