2013-12-17 14 views
6

Каждый раз, когда я запускаю свои assertEquals, мой ожидаемый BigDecimal округляется, что приводит к его сбою. Как я могу убедиться, что он не раунд или нет другого пути?Как заставить BigDecimal от округления в JUnit assertEquals?

@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

Не думайте, что это точный дубликат, другой вопрос вызвал .doubleValue() повсюду. –

ответ

19

Поместите его в кавычки и используйте конструктор BigDecimal.

BigDecimal expected = new BigDecimal("1321.507369947139705200000"); 

Если вы не сделаете этого, число преобразуется в double первый, а затем в BigDecimal, потому что 1321.507369947139705200000 является double буквальным. Это действительно не то, что вы хотите.

+0

ah duh, Спасибо, Дэвид! – user10297

Смежные вопросы