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