Confronto tra numeri interi espressi come double

di il
1 risposte

Confronto tra numeri interi espressi come double

Ciao a tutti,

Sono nuovo di questo forum e spero di non aprire una discussione gia' trattata, ma non mi pare sia cosi'. La mia domanda e' la seguente: il confronto tramite l'operatore "==" fornisce risultati corretti se usato tra numeri interi (interi matematicamente parlando: 1,-2,5,..) ma definiti in formato double?
Ovvero, se io avessi

double a=2. ;
double b=3 - 1 ;

"a==b" restituirebbe sicuramente 'true' ?

Lo chiedo perche' sono consapevole dei rischi nel confronto tra numeri double, ma mi risulta che i numeri interi siano memorizzati in modo univoco anche nel formato double. Ovviamente in questo caso potrei semplicemente definire a e b come int, ma mi chiedevo se concettualmente ci fossero rischi nell'espressione scritta sopra.

Spero possiate risolvere il mio dubbio, saluti!

1 Risposte

  • Re: Confronto tra numeri interi espressi come double

    
    #include <stdio.h>
    int main ()
    {
      double a=2.0 ;
      double b=3.0 - 2.0 ;
    
      printf ("%s\n",(a==b) ? "Vero" : "Falso");
      return 0;
    }
    
    Sempre vero.

    Tuttavia usando numeri complessi è oppurtuno controllare anche gli esponenti ed eventuali NaN per evitare soprese.

    Saluti,
    Max
Devi accedere o registrarti per scrivere nel forum
1 risposte