Problème calcul simple JAVA

Fermé
Absot Messages postés 777 Date d'inscription mardi 28 octobre 2008 Statut Membre Dernière intervention 4 septembre 2020 - 3 juin 2010 à 17:59
Absot Messages postés 777 Date d'inscription mardi 28 octobre 2008 Statut Membre Dernière intervention 4 septembre 2020 - 3 juin 2010 à 18:32
Bonjour, j'ai créé une petit application en JAVA où le but est de choisir son menu, donc on le choisit tout ça et mon problème est au moment j'affiche le prix du menu qui comprend un repas principal, une boisson et un dessert.

Ca ne m'affiche que les entiers, je veux dire par là par exemple si je fais l'addition de 9.50 + 3.50, il me retournera 12 au lieu de 13 car il fait l'addition de 9 + 3 et non 9.50 + 3.50.

J'utilise des variables de type float, j'ai également essayé avec des variables de type double mais c'est la même chose, comment je pourrais faire?

Merci de votre aide
A voir également:

2 réponses

theBoneLESS Messages postés 20 Date d'inscription jeudi 3 juin 2010 Statut Membre Dernière intervention 13 juillet 2010 4
3 juin 2010 à 18:09
C'est certain que je peux pas voir ton code mais voici les possibilités d'erreur que j'entrevois:

- Tu fais les calculs avec des des nombres à virgules mais tu stockes ton résultat dans une variable int.
- Ton résultat est bien en nombre à virgule mais tu l'affiches avec le format entier.

Les double et les float sont bien des nombres à virgule donc il ne devrait pas y avoir de problèmes. Peut être est-ce une utilisation du mauvais formatage lors de l'output. Exemple:

double resultat = 3.5;
System.out.format("Resultat: %d", resultat);

au lieu de:

double resultat = 3.5;
System.out.format("Resultat: %f", resultat);
0
Absot Messages postés 777 Date d'inscription mardi 28 octobre 2008 Statut Membre Dernière intervention 4 septembre 2020 44
Modifié par Absot le 3/06/2010 à 18:35
Je récupère bien mes résultats dans mes floats.
Dans ma BDD, les prix sont de type float

Voilà mon code:
private String repas; 
private String boisson; 
private String dessert; 
private String query; 
private int idRepas; 
private int idBoisson; 
private int idDessert; 
private int idFacture; 
private int nombreRepas; 
private int nombreBoisson; 
private int nombreDessert; 
private double prix; 
private double prixFacture; 


repas = choiceRepas.getSelectedItem(); 
boisson = choiceBoisson.getSelectedItem(); 
dessert = choiceDessert.getSelectedItem(); 
nombreRepas = Integer.parseInt(nombreChoiceRepas.getSelectedItem()); 
nombreBoisson = Integer.parseInt(nombreChoiceBoisson.getSelectedItem()); 
nombreDessert = Integer.parseInt(nombreChoiceDessert.getSelectedItem()); 
idRepas = retourneId(repas, "Repas"); 
idBoisson = retourneId(boisson, "Boisson"); 
idDessert = retourneId(dessert, "Dessert"); 
prix = retournePrix(repas, "Repas")*nombreRepas; 
System.out.println("Prix du repas : " + prix); 
prix = prix+(retournePrix(boisson, "Boisson")*nombreBoisson); 
System.out.println("Prix du repas et de la boisson : " + prix); 
prix = prix+(retournePrix(dessert, "Dessert")*nombreDessert); 


public float retournePrix(String nom, String categorie) 
{ 
 String nomAliment = nom;  
 String categorieAliment = categorie; 
 float prix = 0;  
 String sql = ""; 
 if (categorieAliment == "Boisson") 
 { 
  sql = "SELECT * FROM Boisson WHERE nom = '" + nomAliment + "';"; 
 }else if (categorieAliment == "Repas") 
 { 
  sql = "SELECT * FROM Repas WHERE nom = '" + nomAliment + "';"; 
 }else 
 { 
  sql = "SELECT * FROM Dessert WHERE nom = '" + nomAliment + "';"; 
 } 
 final String driver ="com.mysql.jdbc.Driver"; 
 final String url = "jdbc:mysql://127.0.0.1/***"; 
 final String user = "***"; 
 final String passwd = "***"; 
 Connection con = null; 
 Statement state = null; 
 ResultSet result = null; 
   
 try 
 { 
  // Chargement du driver 
  Class.forName(driver).newInstance(); 
  // Connexion � la BDD 
  con = DriverManager.getConnection(url, user, passwd); 
  // Creation de l'objet Statement 
  state = con.createStatement(); 
  // Execution de la requete 
  // rs contient le r�sultat de la requete SQL 
  result = state.executeQuery(sql); 
  System.out.println(sql); 
  while (result.next())  
   { 
   prix = result.getFloat("prix"); 
   } 
   
  // Fermeture des objets utilis�s 
  result.close(); 
  state.close(); 
 } 
 catch(ClassNotFoundException e) 
 { 
  System.err.println("Class non trouvée " + driver); 
 } 
 catch (SQLException e) 
 { 
  System.err.println("SQL erreur : " + sql + " " + e.getMessage()); 
 } 
 catch (Exception e)  
 { 
  e.printStackTrace(); 
 } 
 finally 
 { 
  try 
  { 
   if (con != null) 
   { 
    con.close(); 
   } 
  } 
  catch (Exception e) 
  { 
   System.err.println(e); 
  } 
 } 
 return prix;  
} 


Je ne vois pas trop où est mon erreur.. :/
0