Changer INT en Double

Résolu
spmsbl Messages postés 51 Date d'inscription lundi 2 octobre 2006 Statut Membre Dernière intervention 14 février 2013 - 25 sept. 2010 à 19:51
spmsbl Messages postés 51 Date d'inscription lundi 2 octobre 2006 Statut Membre Dernière intervention 14 février 2013 - 27 sept. 2010 à 14:05
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
A voir également:

6 réponses

Utilisateur anonyme
27 sept. 2010 à 06:09
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 /...
3
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
26 sept. 2010 à 08:50
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.
0
Utilisateur anonyme
26 sept. 2010 à 12:28
Salut,

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

Cordialement,
...\ Dan /...
0
spmsbl Messages postés 51 Date d'inscription lundi 2 octobre 2006 Statut Membre Dernière intervention 14 février 2013
26 sept. 2010 à 17:18
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)``
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kaloway Messages postés 358 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 13 avril 2020
26 sept. 2010 à 18:21
parseDouBLE converti une chaine de caractère en double
0
spmsbl Messages postés 51 Date d'inscription lundi 2 octobre 2006 Statut Membre Dernière intervention 14 février 2013
27 sept. 2010 à 14:05
Merci beaucoup pour ta réponse Dan !
0
Rejoignez-nous