Ho appena appreso da Peter Lawreys post che questa è un'espressione valida e restituisce true
.Perché è consentita la precisione arbitraria nei doppi letterali in Java?
333333333333333.33d == 333333333333333.3d
La mia domanda è, perché è permesso di avere doppi letterali, che non possono essere rappresentati in un doppio, mentre letterali interi che non possono essere rappresentati non sono consentite. Qual è la motivazione per questa decisione.
Una nota a margine, ho può effettivamente innescare fuori errore di compilazione gamma di doppie letterali :-)
99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999d
Quindi, fintanto che siamo in (min, max) gamma, il letterale viene approssimato, ma quando si esce da questo, sembra che il compilatore si rifiuti di approssimarlo.
Come stai proponendo, possiamo facilmente rappresentare il doppio che è "il più vicino possibile a 0,1" se disattivi 0,1? –
Buon punto. Che ovvio ...: P – aioobe