3.1.4 부동소수점 수를 두 개 비교
컴퓨터는 모든 부동소수점 수를 표현할 수 없습니다.3 자바에서 부동소수점 타입(float과 double)의 어떤 수들은 근사치로 구해야 합니다. 단위 테스트에서 시사점은 두 부동소수점 수를 비교해도 항상 우리가 원하는 대로 나오지 않을 수 있다는 것입니다.
iloveyouboss_13/test/scratch/AssertHamcrestTest.java
assertThat(2.32 * 3, equalTo(6.96));
테스트를 통과할 것 같지만 실패합니다.
java.lang.AssertionError: Expected: <6.96> but: was <6.959999999999999>
두 개의 float 혹은 double 양을 비교할 때는 두 수가 벌어질 수 있는 공차 또는 허용 오차를 지정해야 합니다. assertTrue()를 사용하여 다음과 같이 직접 작성할 수 있습니다.
iloveyouboss_13/test/scratch/AssertHamcrestTest.java
assertTrue(Math.abs((2.32 * 3) - 6.96) < 0.0005);
헉, 저 단언은 잘 읽히지 않네요. 실패 메시지 또한 내용을 파악하기 어렵습니다.