[java] mon prg donne une erreur de calcul
domxaline
-
issemgane Messages postés 32 Date d'inscription Statut Membre Dernière intervention -
issemgane Messages postés 32 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
quant à output:
me donne
Vous allez créer un compte :
Entrez le nom du titulaire :
x
Entrez le prenom titulaire :
y
Entrez l'adresse du titulaire :
z
solde après un an : 2524.0
mais dans la classe CompteEpargne2
si je corrige au lieu de:
public double tauxInteret=3/100;
si j'écris ainsi
public double tauxInteret=0.03;
mon résultat est bonne:
2599.7200000000003
veuillez m'aider svp
normalement après avoir calculé je dois avoir solde après avoir un an: 2599.72
mais pourquoi j'ai 2524.0 ?
veuillez m'aidez svp
public class CompteBancaire
{
public String nom, prenom, adresse,tel;
public CompteBancaire()
{
System.out.println("Vous allez créer un compte :");
System.out.println("Entrez le nom du titulaire :");
this.nom=Lire.chaine();
System.out.println("\nEntrez le prenom titulaire :");
this.prenom=Lire.chaine();
System.out.println("\nEntrez l'adresse du titulaire :");
this .adresse=Lire.chaine();
}
public void afficherAdresse()
{
System.out.println("\nAdresse du compte de " + this.nom + " = " + this.adresse );
}
}
public class CompteEpargne2 extends CompteBancaire
{
public final double soldeMinimal=1;
public double tauxInteret=3/100;
public double montantApresInteret(double montantInitial)
{
return montantInitial*(1+tauxInteret);
}
}
public class TesterHeritage2
{
public static void main(String[] args)
{
CompteEpargne2 c2=new CompteEpargne2();
double sommeVersées=2524;
System.out.println("\nSolde après un an : "+c2.montantApresInteret(sommeVersées));
}
}
quant à output:
me donne
Vous allez créer un compte :
Entrez le nom du titulaire :
x
Entrez le prenom titulaire :
y
Entrez l'adresse du titulaire :
z
solde après un an : 2524.0
mais dans la classe CompteEpargne2
si je corrige au lieu de:
public double tauxInteret=3/100;
si j'écris ainsi
public double tauxInteret=0.03;
mon résultat est bonne:
2599.7200000000003
veuillez m'aider svp
normalement après avoir calculé je dois avoir solde après avoir un an: 2599.72
mais pourquoi j'ai 2524.0 ?
veuillez m'aidez svp
A voir également:
- [java] mon prg donne une erreur de calcul
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
3 réponses
Bonjour,
dans la classe
remplace
Ceci t'évitera la division entière...
dans la classe
remplace
public double tauxInteret=3/100;par :
public double tauxInteret=(double)3/100;
Ceci t'évitera la division entière...
Peux-tu expliquer en quoi est-ce moche? ou bien qui à toi de voir si tu as un problème avec le "transtipage"... Sinon, pas mal ton idée sauf que je trouve pas important de transformer aussi le dénominateur en double (100.0) car la transformation du numérateur suffirait (le résultat d'une opération entre un double et un int est double).
C'est "moche" parce que cela signifie que tu créés d'abord un int, puis tu effectues une conversion en double. Ça fait donc deux étapes. C'est plus propre de créer directement un double.
Sur le même principe, une division d'un double par un int conduit à convertir le int en double, alors qu'on pourrait directement donner le dénominateur en double et ainsi s'éviter la conversion.
Sur le même principe, une division d'un double par un int conduit à convertir le int en double, alors qu'on pourrait directement donner le dénominateur en double et ainsi s'éviter la conversion.
Ce serait même pire. Ici, puisque les valeurs sont en dures il est possible que le résultat soit calculé directement à la compilation. Mais si c'était dans une boucle par exemple, donc à l'exécution, tu aurais à chaque fois la conversion, donc ça prendrait à chaque fois un petit peu plus de temps, certes pas beaucoup plus, mais autant faire ça proprement et éviter les conversions inutiles.