Changer INT en Double [Résolu]

Signaler
Messages postés
51
Date d'inscription
lundi 2 octobre 2006
Statut
Membre
Dernière intervention
14 février 2013
-
spmsbl
Messages postés
51
Date d'inscription
lundi 2 octobre 2006
Statut
Membre
Dernière intervention
14 février 2013
-
Bonjour
Je dois écrire une petit programme qui va calculer des fractions.
J'ai une variable INT mais le résultat doit être de type double car je ne veux pas que le résultat soit arrondis. J'ai essayer de mettre ma variable de type double au départ mais j'ai toujours un message d'erreur. Voici la méthode que je dois modifier . La variable nombre que j'envoie est de type INT.
public class TP1 {
static int avecFor(int nombre) {
double somme2;
int somme = 0;
for(int i = 2; i <= nombre; i++)
somme += 1.5+(1/i);
somme2 = somme;
return somme2;

}

Merci d'avance

6 réponses


Re,

Pour que ce soit correct il faut passer par des doubles (ou des float):

double un = 1;
         double somme2=0;
         int nombre = 10;
         for(int i = 2; i <= nombre; i++)
         {
            somme2 += 1.5+(un/i); // 1.5 est double par défaut, 1.5d double implicitement 1.5f est float
            System.out.println("somme2 = " + somme2); // dans la boucle pour voir la "progression"
         }
         // ce qui donne somme2 = 15.428968253968252
      	

mais avec 1.5, sauf quand i est à 2, la 1ere fois donc, les décimales sont à zero, mais dans tous les autres cas seront probablement significatives et si tu veux le résultat dans un int sans arrondir, ces décimales seront à tronquer.

Conversion en int:
      // avec arroni, c'est ici qu'il faudrait arrondir
         String resultatStr = Double.toString(somme2);
         System.out.println("resultatStr = "" + resultatStr + """);
         int indPoint = resultatStr.indexOf(".");
         resultatStr = resultatStr.substring(0, indPoint);
         System.out.println("resultatStr tronque = "" + resultatStr + """);
         
         int resultatInt = Integer.parseInt(resultatStr);
         System.out.println("resultatInt = " + resultatInt);


Cordialement

...\ Dan /...
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
272
Bonjour,

static int avecFor(int nombre) { 
   double somme2=0; 
   for(int i = 2; i <= nombre; i++) 
      somme2 += 1.5f+(1/i);
      } 
   return somme2; 
} 


Si tu as d'autres problèmes, tu peux utiliser Double.parseDouble(nombreInt) qui te retourne un double.

Salut,

On peut faire monDouble = monInt;
Mais monInt = monDouble non; // possible loss of precision à la compile

Cordialement,
...\ Dan /...
Messages postés
51
Date d'inscription
lundi 2 octobre 2006
Statut
Membre
Dernière intervention
14 février 2013

Merci a vous deux pour votre réponse mais j'ai toujours des erreurs de compilation
``possible loss of precision`` et quand j'ajoute
Double.parseDouble(nombreInt)
J'ai le message
``parseDouble(java.lang.String)in java.lang.Double cannot be applied to (int)``
Messages postés
357
Date d'inscription
jeudi 24 octobre 2002
Statut
Membre
Dernière intervention
30 mars 2011

parseDouBLE converti une chaine de caractère en double
Messages postés
51
Date d'inscription
lundi 2 octobre 2006
Statut
Membre
Dernière intervention
14 février 2013

Merci beaucoup pour ta réponse Dan !