Rounding in Matlab (very trivial)

4 vues (au cours des 30 derniers jours)
Ryan Shrott
Ryan Shrott le 19 Août 2015
Commenté : Walter Roberson le 19 Août 2015
Today is my first day using Matlab. I have been using C++ for last few years. Could someone please explain why FALSE is printed here?
%%Rounding of decimal fractions
x1=0.3
x2=0.1+0.1 + 0.1
test1=(x1==x2) % PRINTS FALSE? WHY?

Réponse acceptée

Steven Lord
Steven Lord le 19 Août 2015
See question 1 in the Mathematics section of the FAQ.
  3 commentaires
Image Analyst
Image Analyst le 19 Août 2015
I suppose for some number combinations it will match all the way out to the umpteenth decimal place and for others it won't. Bottom line: to be robust you need to check non-integer floating point numbers against a tolerance and not for equality.
Walter Roberson
Walter Roberson le 19 Août 2015
It does not have to be intuitive: it depends upon the exact bit pattern and upon the rounding mode that is in effect.
https://en.wikipedia.org/wiki/Rounding#Round_half_to_even

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Operators and Elementary Operations dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by