는 :2 BigDecimal 간의이 비교가 실패하는 이유는 무엇입니까? 다음과 같은 상황을 포함 I는 단위 테스트를 자바 응용 프로그램에
BigDecimal rendimentoLordoProvvisiorioExpected = new BigDecimal(2.85000);
BigDecimal rendimentoLordoProvvisiorioDB = null;
rendimentoLordoProvvisiorioDB = pucManager.getRendimentoLordoProvvisorio(date);
assertTrue(rendimentoLordoProvvisiorioExpected.compareTo(rendimentoLordoProvvisiorioDB) == 0);
의 값이 변수가 수동으로 rendimentoLordoProvvisiorioDB을 2.85000에 걸렸고 얻어진 값이다 rendimentoLordoProvvisiorioExpected은 2.85000입니다 .
문제는 그 나는()의 JUnit 함수 assertTrue에이을 비교 한을 수행 할 때
assertTrue(rendimentoLordoProvvisiorioExpected.compareTo(rendimentoLordoProvvisiorioDB) == 0);
이가 은 2.85000 잘 살고 (로 2.850000000000000088817841970012523233890533447265625이 아닌 것 같다 rendimentoLordoProvvisiorioExpected 때문에 실패).
왜? 이전 코드를 수정하여 렌더링 휘도 좌표 값 예상 값을 예상 값 으로 설정하려면 어떻게합니까?
정확하지 않은 double을 사용하여'rendimentoLordoProvvisiorioExpected'를 초기화합니다. 대신 String을 사용하여 초기화하십시오. – hotzst
왜 내가 'BigDecimal (double)'의 JavaDoc을 읽지 않은지 궁금합니다 (https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html#BigDecimal -더블-). 그것은'double'이 당신이 사용해야하는 것이 정확하지 않다는 것을 알려줍니다. – Tom