Problème calcul simple JAVA
Absot
Messages postés
819
Statut
Membre
-
Absot Messages postés 819 Statut Membre -
Absot Messages postés 819 Statut Membre -
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
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:
- Problème calcul simple JAVA
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Waptrick java voiture - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
2 réponses
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:
au lieu de:
- 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);
Je récupère bien mes résultats dans mes floats.
Dans ma BDD, les prix sont de type float
Voilà mon code:
Je ne vois pas trop où est mon erreur.. :/
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.. :/