Why the result of (1-0.6667)==0.3333 is zero in MATLAB? how can I get one?
조회 수: 1 (최근 30일)
이전 댓글 표시
Why the result of (1-0.6667)==0.3333 is zero in MATLAB? how can I get one?
when I use matlab to calculate 1-0.6667 I get 0.3333. but the result of (1-0.6667)==0.3333 is zero I even tried this one
t=1-0.6667;
t==0.3333
the result is again 0.
how can I get one for (1-0.6667)==0.3333?
댓글 수: 0
답변 (6개)
Azzi Abdelmalek
2013년 2월 26일
편집: Azzi Abdelmalek
2013년 2월 26일
Because 0.6667 and 0.3333 are codified and stored in the memory with a certain precision
댓글 수: 1
Azzi Abdelmalek
2013년 2월 26일
편집: Azzi Abdelmalek
2013년 2월 26일
use this
tolerence=0.0001
abs((1-0.6667)-0.3333)<tolerence
Shashank Prasanna
2013년 2월 26일
That is because they are not the same.
>> t-0.3333
ans =
5.55111512312578e-17
They can be equal by some tolerance.
>> t-0.3333 < 1e-15
ans =
1
댓글 수: 0
Youssef Khmou
2013년 2월 26일
hi may,
This precision problem, so your numbers are 4 decimals , i suggest to make to make your logical test by multiplying your numbers by 1E+4 :
a=0.6667;
b=0.3333;
f=1e+4; % Factor
f-f*a==f*b % ITS NOT f*(1-a)==f*b
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Get Started with MATLAB에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!