2017-10-01 4 views
-3

J'ai essayé les options suivantes.Comment stocker 3000.00 en Bigdecimal

BigDecimal expectedAmount = BigDecimal.valueOf(3000.00); 

et

BigDecimal expectedAmount = BigDecimal.valueOf(3000); 

et

BigDecimal expectedAmount = new BigDecimal(3000.00); 

et

BigDecimal expectedAmount = new BigDecimal(3000); 

Toutes les stocker 3000,0 mais je souhaite stocker 3000,00 pour mon test JUnit. Vous ne savez pas comment le faire.

+2

Aucune idée de ce que vous demandez. Pensez-vous que 3000.0 est quelque chose de différent de 3000.00? – luk2302

Répondre

1

Vous devez utiliser la constructor accepter la chaîne val comme:

BigDecimal expectedAmount = new BigDecimal("3000.00"); 
+1

merci je n'ai pas essayé cette méthode – Ashish

3

Deux autres options:

BigDecimal expectedAmount1 = new BigDecimal(3000).setScale(2); 
BigDecimal expectedAmount2 = BigDecimal.valueOf(300000L, 2); 

Le premier ne fonctionnera que pour des montants entiers. Le .setScale(2) alors juste "ajoute deux zéros après le point décimal". Le second a besoin d'une valeur redimensionnée (par exemple un montant entier en cents si vous voulez exprimer des dollars), et déclare que le point décimal doit être placé à deux chiffres à gauche de la fin.

Les deux versions n'ont pas besoin d'une représentation sous forme de chaîne, ce qui peut être un avantage en termes de performances.