2011-11-21 3 views
0

j'ai un modèle qui le compare à une carte et affiche les informations en tant que tel:Pourquoi le modèle ne rend-il pas les bonnes valeurs?


     #{list items:report.getCategoryMap()?.keySet(), as:'cat'} 
      %{models.reporting.TransactionReportItem item = report.getCategoryMap()?.get(cat);}% 
      
       ${cat} 
       ${item?.nbCredit} 
       ${item?.getCreditPerc(report.nbCredit)} 
       ${item?.nbDebit} 
       ${item?.getDebitPerc(report.nbDebit)} 
       ${item?.getTotalTransactions()} 
      
     #{/list} 

pour une raison quelconque le modèle rendent toujours le résultat de getCreditPerc et getDebitPerc comme 0,0


    public Double getCreditPerc(long totalCredit){ 
     double perc = (double) (nbCredit/totalCredit); 
     Logger.info("nbCredit: %s, total cr: %s", nbCredit, totalCredit); 
     return new Double(perc); 
    } 

Lorsque vous appelez la modèle que je peux voir la sortie dans le journal:

2011-11-21 13:54:22 INFO ~ [TransactionReportItem: 85] getDebitPerc() - nbDebit: 39, cr total: 4984

J'ai essayé d'utiliser un type primitif au lieu d'un objet double sans succès. Lors du débogage du code, je peux voir que toutes les valeurs sont correctement définies.

Cela pourrait-il être quelque chose à voir avec le rendu de modèle groovy?

Répondre

4

Affichage du journal à partir d'une autre fonction ne contribue pas à cette question le long ;-)

Cependant, le problème est que vous avez deux ints en Java, et vous êtes en les divisant ainsi vous obtenez la division entière .. .

casting cet entier puis à un double est trop tard ...

Essayez:

double perc = (double)nbCredit/totalCredit ; 
+0

Yep vient de réaliser que. Tx. – emt14

+0

n'a pas vu votre message et j'ai posté le même;) – mandubian

1

un id stupide ea de moi. N'est-ce pas simplement un problème dans le code?

int nbCredit=39; 
int total=4984; 
double perc = (double) (nbCredit/totalCredit); // gives 0 

nbCredit/total est une division d'entiers avec un résultat < 1 de sorte qu'il pourrait être arrondi à 0

avez-vous essayer avec:

double perc = (double)nbCredit/totalCredit; 
+0

Oui c'était. Je me suis rendu compte qu'après avoir posté ... – emt14

Questions connexes