Perché qualcuno dovrebbe aver bisogno di questa sintassi java?

7

Un giorno mentre si scava la documentazione del linguaggio Java, come ho fatto, ho trovato questa piccola bellezza in agguato all'interno di Double :

0.25 == 0x1.0p-2

Ora, ovviamente (!) questo significa prendere il numero esadecimale 1 e spostarlo a destra decimale 2 volte. La regola sembra essere quella di usare la base 16 sul lato intero e la base 2 sul lato reale.

Qualcuno là fuori ha effettivamente utilizzato la sintassi della mano destra in un contesto necessario, non solo come modo per far uscire gli amici dai tuoi colleghi sviluppatori?

    
posta Gary Rowe 16.11.2010 - 18:12
fonte

2 risposte

7

Solo un'ipotesi: alcuni numeri razionali in base10 sono irrazionali in base2, e al contrario alcuni numeri razionali in base2 sono irrazionali in base10 (correggimi se ho torto ... sono cercando questo per confermare).

EDIT: grazie a " Nota per auto-pensare a un nome "per correggermi.

Supponevo che se avessi bisogno di specificare un valore binario esatto come un punto mobile (come un valore epsilon nella programmazione grafica), allora potrebbe essere più comodo usare questa sintassi. Ad esempio, 1/1024 è 0.0009765625 nella base 10, ma usando questa sintassi può essere scritto come 0x1.0p-10

    
risposta data 16.11.2010 - 20:47
fonte
3

Completamente pazzo, giusto? Molte, molte lune fa ho lavorato con un ragazzo che avrebbe scritto cose del genere. Veniva da un background di assemblaggio e sosteneva che il suo codice sarebbe andato più veloce di quello che avrebbe prodotto il compilatore. Penso che questo argomento sia andato via decenni fa (insieme ai programmatori con uno sfondo di montaggio!)

    
risposta data 16.11.2010 - 18:24
fonte

Leggi altre domande sui tag