¿Por qué alguien necesitaría esta sintaxis Java?

7

Un día, mientras repasaba la documentación en lenguaje Java, como usted, encontré esta pequeña belleza al acecho dentro de Double :

0.25 == 0x1.0p-2

Ahora, obviamente (!) esto significa tomar el número hexadecimal 1 y desplazarlo a la derecha con el decimal 2 veces. La regla parece ser usar la base 16 en el lado entero y la base 2 en el lado real.

¿Alguien por ahí en realidad ha usado la sintaxis de la mano derecha en un contexto necesario, no solo como una forma de eliminar las cervezas de sus colegas desarrolladores?

    
pregunta Gary Rowe 16.11.2010 - 18:12

2 respuestas

7

Solo una conjetura: algunos números que son racionales en base10 son irracionales en base2, y a la inversa, algunos números que son racionales en base2 son irracionales en base10 (corríjame si me equivoco ... buscando esto para confirmar).

EDITAR: gracias a " Nota para auto - pensar en un nombre "para corregirme.

Supuse que si tenía la necesidad de especificar un valor binario exacto como punto flotante (como un valor épsilon en la programación gráfica), podría ser más conveniente usar esta sintaxis. Por ejemplo, 1/1024 es 0.0009765625 en la base 10, pero con esta sintaxis puede escribirse como 0x1.0p-10

    
respondido por el Dr. Wily's Apprentice 16.11.2010 - 20:47
3

Completamente loco, ¿verdad? Hace muchas, muchas lunas, trabajé con un tipo que escribiría cosas así. Provenía de un fondo de ensamblaje y argumentaría que su código se ejecutaría más rápido de lo que produciría el compilador. Creo que este argumento desapareció hace décadas (¡junto con los programadores con antecedentes de ensamblaje!)

    
respondido por el bigtang 16.11.2010 - 18:24

Lea otras preguntas en las etiquetas