Sto scrivendo un programma per cui necessito di confrontare due celle di una matrice, in particolare la parte problematica è questo ciclo for:
- Codice:
for i=a:b
count=1;
x0=mat(100,i);
k=99;
while(mat(k,i)!=x0 && k>2)
printf("%f != %f \n ", mat(k,i), x0);
count=count+1;
k=k-1;
endwhile
x(i-a+1)=count;
i++;
endfor
Siccome il programma mi dava risultati inaspettati, ho provato a fargli stampare i contenuti delle celle che secondo lui erano diversi, e mi ha restituito:
- Codice:
0.365340 != 0.365340
Ho fatto diverse ipotesi, e quella più probabile mi sembra quella di troncamento nella rappresentazione...ovvero i due numeri sono diversi andando avanti con le cifre decimali, ma non visualizzando solo le prime 6. Ho dato il comando
- Codice:
format long
ma oltre a quelle 6 non va...ci sono altri modi?
In realtà io mi aspettavo che quei valori fossero uguali, ma non riesco a spiegarmi quel risultato se non con la pazzia del mio computer.
Ringrazio in anticipo chiunque cerchi di aiutarmi.