2013-12-17 6 views
6

Jedes Mal, wenn ich meine assertEquals ausführe, wird mein erwartetes BigDecimal gerundet, wodurch es fehlschlägt. Wie stelle ich sicher, dass es nicht rund ist oder gibt es einen anderen Weg?Wie erzwingt BigDecimal in JUnit assertEquals zu runden?

@Test 
public void test() { 
    BigDecimal amount = BigDecimal.valueOf(1000); 
    BigDecimal interestRate = BigDecimal.valueOf(10); 
    BigDecimal years = BigDecimal.valueOf(10); 
    InterestCalculator ic = new InterestCalculate(amount, interestRate, years); 
    BigDecimal expected = BigDecimal.valueOf(1321.507369947139705200000); 
    assertEquals(expected, ic.getMonthlyPaymentAmount()); 
} 
+0

Denken Sie nicht, dass es sich um ein exaktes Duplikat handelt, die andere Frage hatte überall Aufrufe von .doubleValue(). –

Antwort

19

Legen Sie es in Anführungszeichen verwenden, BigDecimal Konstruktor.

BigDecimal expected = new BigDecimal("1321.507369947139705200000"); 

Wenn Sie dies nicht tun, wird die Zahl in einen ersten double umgewandelt und dann zu einem BigDecimal, weil 1321.507369947139705200000 ein double wörtlichen ist. Das ist wirklich nicht das, was du willst.

+0

ah duh, Danke David! – user10297