2010-07-29 3 views
0

매크로 코딩에서 조건과 같지 않음을 확인합니다. 값은 10 진수 또는 정수입니다. 이제는 소수 값의 두 값을 비교하지만 적절한 결과는 얻지 못합니다. 수정 결과를 얻기 위해 추가해야 할 것이 무엇인지 안내해주십시오.vba 매크로 코드의 문제점이 10 진수 값으로 검사하지 않음

If fld4 <> fldval Then 
    MsgBox "....." 
End If 

그러나 다음과 같은 값을 보여주는 메시지의 출력 :

내 코드입니다 (!) 지금

fld4 = 0.25, fldval = 0.26 
fld4 = 0.25, fldval = 0.25 
fld4 = 0.14, fldval = 0.14 
fld4 = 0.11, fldval = 0.11 

답변

2

절대 직접 부동 소수점 값을 비교. 다음과 같이 시도해보세요.

eps = =.00001 'choose an appropriate epsilon 
If Abs(fld4- fldval)<eps Then 
    '... 

Look here 자세한 내용은 다음을 참조하십시오.

+0

고맙습니다. 나는 Abs를 사용하고 올바른 결과를 얻었습니다. 이제 내 코드가 인 경우 Abs (fld4) <> Abs (fldval) Then 추가 할 사항이 충분합니까? – Karthik

+1

Abs가 사용하는 방식을 사용하면 답을 줄 수 있습니다. 음수가있을 수 있습니다. http://en.wikipedia.org/wiki/Absolute_value Doc Brown이 보여주는 것은 전혀 아닙니다. 데이터의 의미에 따라 라운드 (nn.nn, nn) ​​수트가 있습니다. – Fionnuala

+1

@Karthik : Abs (fld4) 사용하기> Abs (fldval)는 정상적으로 작동하지 않습니다. 이것은 여전히 ​​2 개의 부동 소수점 값을 비교하는 표현입니다. 당신이 정말로 내 대답에서 쓴 것처럼 그것을 시도하고, 내가 당신에게 링크를 준 기사를 읽는 데 시간을 투자해야합니다. –