Is it a bug?

4 visualizaciones (últimos 30 días)
Haixiao Xian
Haixiao Xian el 9 de Feb. de 2020
Comentada: Star Strider el 9 de Feb. de 2020
I found a weird situation with the number "1.4"
v=0:0.01:5;
vd=1.4;
a=0;
for i=1:length(v)
if v(i)==vd
a=1
end
end
This code doesn't make the value of "a" become "1." However, if I change the value of "vd" to any other numbers (eg. vd=1.5), this code works well. Also, if I change the range of "v" to "v=0:0.01:2", it works as well. I don't know what's wrong with my orignal codes. Can anyone help me? Thank you very much!

Respuesta aceptada

Star Strider
Star Strider el 9 de Feb. de 2020
You have encountered ‘floating-point approximation error’.
See Floating-Point Numbers for an extended discussion.
Also see colon for an explanation of how it calculates the numbers in your ‘v’ vector.

Más respuestas (1)

Image Analyst
Image Analyst el 9 de Feb. de 2020
Yes, you do have a bug in your program.
bugs.gif
You compared floating point numbers with == instead of ismembertol().
See the FAQ for fixes.

Categorías

Más información sobre Logical en Help Center y File Exchange.

Productos


Versión

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by