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:
Convertir double en int java
Convertir un double en int java - Meilleures réponses
Java convertir double en int - Meilleures réponses
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);
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)``