How to stop from rounding off the decimal numbers?

조회 수: 4 (최근 30일)
Virtualkeeda
Virtualkeeda 2015년 1월 4일
답변: Virtualkeeda 2015년 1월 4일
Hi,
if yupperleft(j)== piinterval(i) upperleft(i)= x1(j);
In the above code, yupperleft is the array which i have calculated by some formulation. piinterval is the array generated from : piinterval=(0:0.1:1);
Matlab is storing the value at 31 index of yupperleft as 0.1000. piinterval(2) will also be 0.1000.
But when comparing they are not getting equal. The reason is because yupperleft is actually 0.0999999999999999.
Is there any way so that i can round off or do something so that 0.0999999999999999 gets to 0.1000 actually not just for to show.
Thanks

채택된 답변

Image Analyst
Image Analyst 2015년 1월 4일
Use tolerances to compare floating point numbers. See the FAQ for code samples and an explanation: http://matlab.wikia.com/wiki/FAQ#Why_is_0.3_-_0.2_-_0.1_.28or_similar.29_not_equal_to_zero.3F

추가 답변 (2개)

Stephen23
Stephen23 2015년 1월 4일
편집: Stephen23 2015년 1월 4일
The simplest method is to allow for some tolerance in the comparison:
A = 0.1;
B = 0.09999999;
Instead of
A==B
you should use
abs(A-B) < 1e-6 % pick this value to suit your needs

Virtualkeeda
Virtualkeeda 2015년 1월 4일
Thank you so much @Image Analyst and @Stephen Cobeldick . The tolerance method worked.
Thank you @Star Strider yours roundn method is also working.

카테고리

Help CenterFile Exchange에서 Images에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by