2013-07-26 1 views
0

설명 할 수 없습니다. 나는 동일한 가치를 지닌 두 개의 변수를 가지고 있지만, 동일하지는 않습니다. 아무도 내가 여기서 뭘 놓치고 있는지 말해 줄 수 있니?두 값은 겉으로 똑같습니다. 그러나 matlab은 그렇지 않다라고 말합니다.

>> y 
y = 
3.4000 
>> x 
x = 
3.4000 
>> y==x 
ans = 
0 
>> whos x 
Name  Size   Bytes Class  Attributes 
x   1x1     8 double    
>> whos y 
Name  Size   Bytes Class  Attributes 
y   1x1     8 double 

정말 놀랍습니다. 농담이 아닙니다.

+0

시도 형식이 길다. 인쇄하기 전에 –

+0

다음을 읽어보십시오. http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html –

답변

5

부동 소수점 정밀도 때문입니다.

format long g 

을 시도하고 다시 xy 봐. x-y을 부동 소수점 숫자에 대한 동등성 테스트보다는 다소 작은 허용 오차 값과 비교하는 것이 더 좋습니다.

+0

http://matlab.wikia.com/wiki/FAQ#도 참조하십시오. Why_is_0.3 _-_ 0.2 _-_ 0.1_.28 or_similar.29_not_equal_to_zero.3F – am304

3

부동 소수점 값을 비교하고 있습니다. 부동 소수점 값은 부동 소수점 수를 비교하는 방법입니다. 부동 소수점 값은 컴퓨터에서 처리됩니다.

대신이 값의 차이가 작은 임계 값보다 작은 지 여부를 테스트하는 것이 일반적입니다.

Matlab 관련 논의는 here을 참조하십시오.

관련 문제