2012-09-25 8 views
3

일부 계산 된 값을 반환하는 SQL Server에서 함수를 실행합니다. dbFit을 사용하여 FitNesse에서 결과를 테스트 할 때 값이 같지 않다고 주장합니다 (아래 스크린 샷 참조).실제 및 예상 값이 같아도 FitNesse 값 비교가 실패합니다.

값은 부동 소수점 형식으로 반환되며 두 소수점 만 비교하는 경우에도 실패합니다. 비교되는 소수점 이하 자릿수를 제한 할 수있는 방법이 있습니까?

FitNesse values that are mismatched

+0

가능한 중복 : http://stackoverflow.com/questions/10775173/float-value-in-slim-query-table-comparison –

답변

3

당신은 적어도 엄격하게, 수레를 비교해서는 안됩니다. 그 이유는 바이너리 시스템의 불완전 성 때문입니다.

float a = 0.15 + 0.15 
float b = 0.1 + 0.2 
if(a == b) // can be false! 
if(a >= b) // can also be false! 

실제 숫자의 유효 자릿수가 제한되어 있으므로 실수를 완벽하게 저장할 수 없습니다. Theres는 거의 항상 오류입니다. 바이너리로 0.1을 써보십시오! 우리가 0.1로 화면에 인쇄 된 것을 보는 것은 근사치 일뿐입니다. 그 광대 한 주제, 당신은 세부 analysys 숫자에 들어갈 수도 있습니다. 당신의 문제로 http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm

:

당신은 ~ = (. 약 같음)를 사용해야합니다보다 일반적인 노트에

, 당신은 여기에 몇 가지 정보를 찾을 수 있습니다. 당신은 여기에 더 많은 정보를 찾을 수 : http://fitnesse.org/FitNesse.UserGuide.SliM.ValueComparisons

+0

예. 대략. 부동 소수점을 비교해야하는 경우 등호 비교 플래그는 좋은 선택입니다. –

관련 문제