w3org - Java base hexadecimal doble literal
w3c etiquetas html (1)
Resulta que es posible, aunque eso me haya sorprendido. La sección 3.10.2 de JLS proporciona la estructura de los literales de punto flotante, incluido HexadecimalFloatingPointLiteral .
public class Test {
public static void main(String[] args) {
double d1 = 0xAAAAAAAAAAAAAAAAAAp0d;
double d2 = 0x1.8p1d;
System.out.println(d1); // A very big number
System.out.println(d2); // 24 = 1.5 * 2^1
}
}
Se requiere p
como parte del exponente binario: el valor después de p
es el número de bits para desplazar el valor a la izquierda. Otros ejemplos:
0x1.4p0d => 1.25 (binary 0.01 shifted 0 bits)
0x8p-4d => 0.5 (binary 1000 shifted *right* 4 bits)
Estoy estudiando para la certificación de Java. Y tengo curiosidad por los literales de java. Sé que es posible hacer algo como esto:
int i = 0xAA;
long l = 0xAAL;
También esto es posible para variables de punto flotante:
double d = 123d;
float f = 123f;
Así que lógicamente pensé con estos ejemplos que lo mismo se aplicaría para hexadecimal. Al igual que puedo agregar L para literales largos, podría agregar ''d'' o ''f'' pero la lógica es errónea ya que ''F'' y ''D'' son valores hexadecimales válidos.
No es posible hacer algo como esto:
double d = 0xAAAAAAAAAAAAAAAAAAd;
¿Esto simplemente no lo permite Java o hay una forma sencilla de hacerlo que no sé?