2014-05-07 9 views
1

J'ai une méthode qui calcule la classe moyenneCalcul de la moyenne?

Note:

private Double moyenneFinale; 

@Column(name = "moyenne_finale") 
public Double getMoyenneFinale() { 
    return this.moyenneFinale; 
} 

public void setMoyenneFinale(Double moyenneFinale) { 
    this.moyenneFinale = moyenneFinale; 
} 

Classe calBean

private double result; 
public double moyenneFinale; 
public calNote { 
    result=0.0 
    result= ((100 * 20)/100)/45; 
    moyenneFinale=result; 
    note.setMoyenneFinale(moyenneFinale); 
} 
//getter and setter 

le résultat devrait être 0,44 mais enregistrée dans la base de données valeur donnée est 0.0 si Je fais +1 il sera 1.0

+0

duplication possible de [Division des nombres entiers dans Java] (http://stackoverflow.com/questions/7220681/division-of-integers-in-java) – BackSlash

+0

@BackSlash La question peut être un doublon mais pas exactement le question vous lié puisque cette question ajoute la nuance des opérandes étant des littéraux et leur type étant changé en ajoutant un «.0» à eux. –

Répondre

2

Tous les numeric li Les paramètres à ((100 * 20)/100)/45 sont des entiers, de sorte que chaque opération effectue une arithmétique de nombres entiers arithmétiques à la place et que le résultat est finalement converti en double lors de l'opération d'affectation.

Vous devez changer au moins un de vos littéraux à 100.0, 20.0, 45.0, ...

+0

_Vous devriez changer vos constantes à 100.0, 20.0, 45.0_ Pas exactement: en changer un seul fera l'affaire – BackSlash

+0

@BackSlash C'est vrai, je vais éditer ma réponse pour le rendre plus clair. –

+0

@BackSlash Je pense que changer tout d'entre eux est plus clair et plus sûr. – broncoAbierto

1

Conformément

result= ((100 * 20)/100)/45; 

vous utilisez l'opérateur / sur les nombres entiers. Lorsqu'il est utilisé sur des entiers, l'opérateur / se comporte comme "DIV" (nombre entier résultant). Exemples: 10/4 = 2, mais 10.0/4 = 2.5, 10/4.0 = 2.5, 10.0/4.0 = 2.5.

Les options sont:

Pour définir des numéros de 100,0, 20,0, 100,0 et 45,0. (Il suffit de régler juste le premier à 100.0).

result= ((100.0 * 20)/100)/45; 

Pour utiliser le moulage sur des nombres. (double) 100.

result= (((double)100 * 20)/100)/45; 

Ou d'ajouter 1,0 * avant l'équation;

result= 1.0*((100 * 20)/100)/45; 

Tho, la première méthode est la meilleure dans votre cas, deuxième et troisième sont utiles si vous êtes donné entiers x, y, z, t et le résultat est ((x * y)/z)/t;

Questions connexes