Post

Visualizzazione dei post con l'etichetta enigmi java

Enigmi Java: (0.1 * 10) == 1 è false?

DOMANDA: Perché se sommo dieci volte la variabile double x = 0.1 il controllo  x == 1 mi da false? package  conversione;         public   class  DieciVolte  {                                       public   static  void  main(String[] args) {                double x = 0;                            for ( int i=0; i<10; i++)                  x += 0.1;               if (x == 1)                  System.out.println( "SI, il valore di x è: " + x);               else                   System.out.println( "NO, il valore di x è: " + x);            }         } RISPOSTA: La soluzione a questo enigma non dipende da Java, né dal linguaggio di programmazione.  L' inganno sta nella conversione del numero 0,1 (in base 10) all'equivalente in binario (ovvero in base 2) che risulta essere un numero periodico leggermente inferiore a 0,1  (0,000110000110000110...) .     Questo comporta che sommare 10 v