Borrar filtros
Borrar filtros

Why the result of (1-0.6667)==0.3333 is zero in MATLAB? how can I get one?

3 visualizaciones (últimos 30 días)
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?

Respuestas (6)

Azzi Abdelmalek
Azzi Abdelmalek el 26 de Feb. de 2013
Editada: Azzi Abdelmalek el 26 de Feb. de 2013
Because 0.6667 and 0.3333 are codified and stored in the memory with a certain precision

per isakson
per isakson el 26 de Feb. de 2013
Editada: per isakson el 26 de Feb. de 2013

Shashank Prasanna
Shashank Prasanna el 26 de Feb. de 2013
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

Youssef  Khmou
Youssef Khmou el 26 de Feb. de 2013
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

Jan
Jan el 27 de Feb. de 2013
This is the most frequently asked question. See FAQ: why is 0.3-0.2~=0.1

Matt J
Matt J el 26 de Feb. de 2013
Editada: Matt J el 26 de Feb. de 2013
Why the result of (1-0.6667)==0.3333 is zero in MATLAB? how can I get one?
The others have told you why. You can get "one", however, by reformulating this way,
>> (3-2)/3==1/3
ans =
1

Categorías

Más información sobre Startup and Shutdown en Help Center y File Exchange.

Etiquetas

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by