Why is logical array fasle?
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
SCRIPT WINDOW
g=9.8000 %value for g
p=3.14; %value of mathematical pie
k1=3.1210191*p
k1==g %generation of logical array
COMMAND WINDOW
g =
9.8000
k1 =
9.8000
ans =
logical
0
0 Commenti
Risposte (3)
Scott MacKenzie
il 15 Giu 2021
The result is false because k1 DOES NOT EQUAL g
Note that both k1 and g are scalars, not vectors. Therefore, the result of k1==g is a logical scalar which is false or 0.
0 Commenti
Steven Lord
il 15 Giu 2021
Floating point arithmetic. While k1 and g are displayed the same they do not contain the same value down to the last bit.
0 Commenti
Kunal Kandhari
il 15 Giu 2021
It is because most decimal fractions are not exactly representable in binary form, just like 1/3 is not representable exactly in a finite number of decimal digits.
if you print 55 decimal places of both the variables you will get something like this:
sprintf('%0.55f',k1)
'9.7999999740000003356499291840009391307830810546875000000'
sprintf('%0.55f',g)
'9.8000000000000007105427357601001858711242675781250000000'
NEVER compare two floating point doubles for exact equality. Well, there are some notable exceptions. So unless you know the exceptions, then assume never applies.
You can see a very detailed description of the same here:
0 Commenti
Vedere anche
Categorie
Scopri di più su Logical in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!