в приложении Java У меня есть модульный тест, который содержит следующую ситуацию:Почему это сравнение между 2 BigDecimal не удается?
BigDecimal rendimentoLordoProvvisiorioExpected = new BigDecimal(2.85000);
BigDecimal rendimentoLordoProvvisiorioDB = null;
rendimentoLordoProvvisiorioDB = pucManager.getRendimentoLordoProvvisorio(date);
assertTrue(rendimentoLordoProvvisiorioExpected.compareTo(rendimentoLordoProvvisiorioDB) == 0);
значения rendimentoLordoProvvisiorioExpected переменных вручную выставиться к 2.85000 и полученное значение rendimentoLordoProvvisiorioDB является 2,85000 ,
Проблема заключается в том, что, когда я делаю это Comparision в assertTrue() функция JUnit
assertTrue(rendimentoLordoProvvisiorioExpected.compareTo(rendimentoLordoProvvisiorioDB) == 0);
это терпеть неудачу, потому что rendimentoLordoProvvisiorioExpected, кажется 2.850000000000000088817841970012523233890533447265625 и не 2,85000 (как выставиться).
Почему? Как я могу изменить предыдущий код, чтобы установить rendimentoLordoProvvisiorio Ожидаемый к ожидаемому значению 2.85000?
Вы инициализируете 'rendimentoLordoProvvisiorioExpected', используя двойной, который не является точным. Попробуйте инициализировать его с помощью String. – hotzst
Интересно, почему вы даже не прочитали, что такое JavaDoc ['BigDecimal (double)'] (https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html#BigDecimal -double-). Он говорит вам, что 'double' не точный, что вы должны использовать вместо этого. – Tom