- 1 1. ¿Qué es el tipo double de Java?
- 2 1.1 double es “punto flotante de doble precisión”
- 3 1.2 Imagen práctica de lo que double puede representar
- 4 1.3 En Java, los literales decimales son double por defecto
- 5 1.4 Situaciones comunes donde se usa double
- 6 1.5 Puntos clave a recordar primero
- 7 2. Rango y precisión de double (Una guía de dígitos significativos)
- 8 2.1 El rango numérico que double puede representar
- 9 2.2 Los dígitos significativos son aproximadamente de 15 a 17
- 10 2.3 “Alta precisión” no significa “decimales exactos”
- 11 2.4 Por qué importan los dígitos significativos
- 12 2.5 Comprensión correcta basada en rango y precisión
- 13 3. Diferencias entre double y float (¿Cuál deberías usar?)
- 14 3.1 Las diferencias básicas entre float y double
- 15 3.2 Por qué double es el estándar en Java
- 16 3.3 Cuándo deberías usar float
- 17 3.4 Una regla sencilla para principiantes
- 18 3.5 Por qué es importante entender esta diferencia
- 19 4. Uso básico de double (declaración, cálculo, salida)
- 20 4.1 Declarar y asignar un double
- 21 4.2 Las cuatro operaciones aritméticas básicas
- 22 4.3 Una advertencia clave con la división
- 23 4.4 Imprimir resultados de cálculo
- 24 4.5 Imprimir con un número fijo de dígitos
- 25 4.6 Resumen de los conceptos básicos de cálculo con double
- 26 5. Trampa común #1: Por qué ocurren errores de precisión
- 27 5.1 Un ejemplo clásico de error de precisión
- 28 5.2 Por qué ocurre este tipo de error
- 29 5.3 Asume siempre que pueden ocurrir errores
- 30 5.4 Cuando los errores generalmente no importan
- 31 5.5 Cómo deberías manejar los errores de precisión
- 32 6. Trampa común #2: Usar “==” para comparar valores double es peligroso
- 33 6.1 Qué ocurre cuando usas “==”
- 34 6.2 La regla de oro para comparar valores double
- 35 6.3 Comparar con un epsilon (tolerancia)
- 36 6.4 ¿Cómo eliges un epsilon?
- 37 6.5 Cómo difiere esto de BigDecimal
- 38 6.6 Resumen de reglas de comparación
- 39 7. Trampa común #3: La división entera produce cero
- 40 7.1 Por qué ocurre la división entera
- 41 7.2 Cómo Realizar la División Decimal Correctamente
- 42 7.3 Un Error Común en el Mundo Real
- 43 7.4 Reglas que los Principiantes Deben Recordar
- 44 7.5 Resumen de la Trampa de la División Entera
- 45 8. Conversión Entre Strings y double (Lo Más Común en la Práctica)
- 46 8.1 Convertir una Cadena a double
- 47 8.2 Diferencia Entre Double.valueOf()
- 48 8.3 Convertir double a Cadena
- 49 8.4 Siempre Formatee las Cadenas para la Visualización
- 50 8.5 Puntos Clave para la Conversión de Cadenas
- 51 9. Valores Especiales en la Clase Double (NaN / Infinity)
- 52 9.1 ¿Qué es NaN (Not a Number)?
- 53 9.2 ¿Qué es Infinity?
- 54 9.3 Cómo comprobar NaN e Infinity
- 55 9.4 Por qué es importante la detección temprana
- 56 10. Use BigDecimal para dinero y cálculos exactos
- 57 10.1 ¿Qué es BigDecimal?
- 58 10.2 Regla importante al usar BigDecimal
- 59 10.3 Elegir entre double y BigDecimal
- 60 11. Resumen: Uso correcto de double en Java
- 61 12. Preguntas frecuentes (FAQ)
1. ¿Qué es el tipo double de Java?
El tipo double de Java es un tipo de dato fundamental para trabajar con valores decimales. A diferencia de int o long, que representan enteros, double se usa para representar números con punto decimal como “1.5”, “3.14” o “0.01”. Es uno de los tipos más utilizados al realizar cálculos numéricos en Java.
Como los principiantes suelen tropezar con esto al principio, es importante comprender primero qué características tiene double.
1.1 double es “punto flotante de doble precisión”
double es un número de punto flotante de doble precisión que representa valores usando 64 bits (8 bytes).
Como sugiere el término “punto flotante”, double maneja internamente los valores numéricos como aproximaciones.
Como resultado, posee las siguientes características:
- Puede manejar un rango extremadamente amplio de valores
- Puede realizar cálculos que involucren partes fraccionarias
- Sin embargo, no puede representar cada valor decimal de forma exacta
El hecho de que “no pueda representar cada decimal exactamente” se explica con detalle más adelante, pero tener presente que double no es万能 facilita mucho la comprensión del resto.
1.2 Imagen práctica de lo que double puede representar
El rango de valores que un double puede representar es extremadamente grande. En términos generales, puede manejar:
- Números muy pequeños (p. ej., 0.0000000001)
- Números muy grandes (del orden de 10^300)
- Números decimales cotidianos típicos
Por ejemplo, todos los valores siguientes pueden almacenarse en un double:
double a = 3.14;
double b = 0.1;
double c = 123456789.987;
Para cálculos como el procesamiento numérico cotidiano, cantidades físicas, datos estadísticos y cálculos de coordenadas—donde “aproximadamente correcto es suficiente”—double se usa habitualmente como la opción estándar.
1.3 En Java, los literales decimales son double por defecto
En Java, cuando escribes un literal numérico con punto decimal, trata como un double por defecto, a menos que indiques lo contrario.
double x = 1.23; // OK
float y = 1.23; // コンパイルエラー
En el ejemplo anterior, float y = 1.23; falla porque 1.23 se interpreta como un double.
Si deseas que se trate como float, debes especificarlo explícitamente así:
float y = 1.23f;
Este comportamiento muestra que en Java, double es el valor predeterminado para cálculos decimales.
1.4 Situaciones comunes donde se usa double
double se emplea habitualmente en situaciones como las siguientes:
- Cuando se quiere un resultado de división como decimal
- Cálculos como promedios y razones
- Renderizado de gráficos y cálculos de coordenadas
- Computación científica y procesamiento estadístico
Por otro lado, no es adecuado para cálculos monetarios o procesamiento decimal estricto.
Esto se explica más adelante con detalle al comparar double y BigDecimal.
1.5 Puntos clave a recordar primero
Para resumir lo aprendido hasta ahora de forma amigable para principiantes:
doublees el tipo básico para números decimales- Internamente, los cálculos usan valores aproximados
- En Java, los literales decimales son
doublepor defecto - Debes tener cuidado cuando la precisión sea importante
2. Rango y precisión de double (Una guía de dígitos significativos)
Al estudiar el tipo double, un tema inevitable es la pregunta de “¿qué tan exacto puede ser al representar números?”
En esta sección aprenderás el rango numérico, la precisión y la idea de dígitos significativos de double de manera accesible paraantes.
2.1 El rango numérico que double puede representar
Como double utiliza 64 bits para representar valores, puede manejar un rango extremadamente amplio de números.
Conceptualmente, el rango se ve así:
- Números muy pequeños: por ejemplo, hasta alrededor de
4.9 × 10^-324 - Números muy grandes: por ejemplo, hasta alrededor de
1.8 × 10^308
En la programación cotidiana, rara vez necesitas pensar en estos límites.
Para la mayoría de los propósitos prácticos, puedes considerarlo como el manejo de un rango casi “casi infinito”.
2.2 Los dígitos significativos son aproximadamente de 15 a 17
El concepto clave para entender la precisión de double son los dígitos significativos.
Se dice que un double puede almacenar con precisión alrededor de 15 a 17 dígitos.
Por ejemplo, considera los siguientes valores:
double a = 123456789012345.0;
double b = 1234567890123456.0;
a(15 dígitos) puede representarse con precisiónb(más de 16 dígitos) puede tener los dígitos menos significativos redondeados
En otras palabras, a medida que aumenta el número de dígitos, la precisión fina se pierde gradualmente.
2.3 “Alta precisión” no significa “decimales exactos”
Este es un malentendido común entre principiantes.
doubletiene alta precisión
→ entonces puede manejar decimales exactamente
Esto no siempre es correcto.
double es, en efecto, un tipo de alta precisión, pero eso significa:
“puede ser preciso como una aproximación hasta cierto número de dígitos”
en lugar de “cada valor decimal es exacto”.
Por ejemplo, considera este cálculo:
double x = 0.1 + 0.2;
System.out.println(x);
Muchas personas esperan 0.3, pero en realidad podrías obtener algo como:
0.30000000000000004
Esto no es un error. Es el modo de funcionamiento de double.
La razón es que 0.1 y 0.2 no pueden representarse exactamente en binario.
2.4 Por qué importan los dígitos significativos
Si no comprendes los dígitos significativos, puedes encontrarte con problemas como:
- Resultados ligeramente incorrectos
- Comparaciones con
==que no coinciden - Errores que se acumulan en sumas o promedios
Todo esto proviene del hecho de que double es un tipo que maneja valores aproximados.
Por otro lado, en áreas donde “igualdad perfecta” importa menos que “precisión realista”, como:
- Renderizado de gráficos
- Simulaciones físicas
- Procesamiento estadístico
double es una elección excelente.
2.5 Comprensión correcta basada en rango y precisión
Para resumir:
doublepuede representar un rango extremadamente amplio de valores- Posee alrededor de 15–17 dígitos significativos
- Los decimales se manejan como aproximaciones
- Ten cuidado cuando se requiera precisión estricta
3. Diferencias entre double y float (¿Cuál deberías usar?)
Al trabajar con decimales en Java, double y float casi siempre se comparan.
Ambos pueden representar valores fraccionarios, pero existen diferencias importantes en precisión, casos de uso y practicidad.
En esta sección nos centramos en criterios claros de decisión para que los principiantes no se queden atascados.
3.1 Las diferencias básicas entre float y double
Mantengamos la comparación simple:
| Type | Bits | Typical Precision | Main Use |
|---|---|---|---|
| float | 32-bit | About 6–7 digits | Lightweight / lower precision |
| double | 64-bit | About 15–17 digits | Standard / higher precision |
Como puedes observar, double ofrece una precisión dramáticamente mayor.
3.2 Por qué double es el estándar en Java
En Java, los literales decimales (como 1.23) se tratan como double por defecto.
Esto se debe principalmente a que:
- En CPUs modernas, el costo de rendimiento de
doublesuele ser insignificante - Los errores provocados por una precisión insuficiente tienden a ser más graves
doublemejora la legibilidad y la seguridad en el código típico
Por lo tanto, en Java, el enfoque común es: usar double a menos que tengas una razón fuerte para no hacerlo.
3.3 Cuándo deberías usar float
¿Entonces float es inútil?
No—puede ser eficaz dependiendo del contexto.
Situaciones típicas en las que se elige float incluyen:
- Cuando necesitas minimizar el uso de memoria de forma extrema
- Al manejar arreglos numéricos masivos (por ejemplo, procesamiento de imágenes)
- Cuando la velocidad es prioritaria sobre la precisión en juegos o cálculos 3D
Sin embargo, para aplicaciones empresariales o web,
rara vez hay una razón sólida para usar float.
3.4 Una regla sencilla para principiantes
Si no estás seguro de cuál usar, recuerda esta regla:
- En caso de duda, usa
double - Usa
floatsolo cuando las restricciones de memoria o rendimiento sean estrictas
Especialmente mientras se aprende, suele ser más eficiente evitar los problemas de precisión específicos de float y construir la comprensión con double.
3.5 Por qué es importante entender esta diferencia
Conocer la diferencia ayuda en situaciones como:
- Entender la intención al leer el código de otra persona
- Evitar pérdidas de precisión innecesarias
- Prevenir errores de cálculo numérico antes de que ocurran
4. Uso básico de double (declaración, cálculo, salida)
Ahora confirmemos el uso básico de double con código real.
Si entiendes el flujo de “declarar → calcular → imprimir”, tendrás los fundamentos cubiertos.
4.1 Declarar y asignar un double
Declaras un double de la misma forma que otros tipos primitivos:
double x = 1.5;
double y = 2.0;
Al asignar valores decimales, no necesitas ningún sufijo especial.
También puedes asignar un valor entero; se convertirá automáticamente a double.
double a = 10; // Treated as 10.0
4.2 Las cuatro operaciones aritméticas básicas
Con double, puedes usar directamente suma, resta, multiplicación y división:
double a = 5.0;
double b = 2.0;
double sum = a + b; // addition
double diff = a - b; // subtraction
double product = a * b; // multiplication
double quotient = a / b; // division
Todos los resultados también son double, por lo que puedes manejar naturalmente los resultados decimales.
4.3 Una advertencia clave con la división
El punto clave es que la división se convierte en un cálculo decimal solo si al menos uno de los operandos es un double.
double result1 = 1 / 2; // result is 0.0
double result2 = 1 / 2.0; // result is 0.5
1 / 2 usa enteros en ambos lados, por lo que primero realiza división entera.
Para evitar esto, haz una de las siguientes cosas:
- Convierte uno de los operandos a
double - Usa un casting explícito
double result = (double) 1 / 2;
4.4 Imprimir resultados de cálculo
Puedes imprimir un valor double directamente usando System.out.println():
double value = 3.14159;
System.out.println(value);
Sin embargo, imprimir tal cual puede mostrar más dígitos de los que deseas.
4.5 Imprimir con un número fijo de dígitos
Si quieres una salida más limpia, printf es conveniente:
double value = 3.14159;
System.out.printf("%.2f%n", value);
Esto imprime el valor con dos dígitos después del punto decimal.
%.2f: 2 dígitos después del punto decimal%n: salto de línea
Para pantallas dirigidas al usuario, se recomienda controlar siempre la cantidad de dígitos mostrados.
4.6 Resumen de los conceptos básicos de cálculo con double
Puntos clave de esta sección:
doublesoporta cálculos decimales de forma natural- Ten cuidado con la división entre enteros
- Controla la cantidad de dígitos mostrados al imprimir los resultados
5. Trampa común #1: Por qué ocurren errores de precisión
Una de las primeras experiencias confusas al usar double es:
“el resultado no coincide con lo que esperaba.”
Esto no es un error de Java. Es una propiedad intrínseca del tipo double.
5.1 Un ejemplo clásico de error de precisión
Veamos un ejemplo bien conocido:
double x = 0.1 + 0.2;
System.out.println(x);
Muchas personas esperan 0.3, pero en realidad puedes ver:
0.30000000000000004
Al ver esto, podrías pensar “algo está mal” o “¿es un bug?”
Pero este es el resultado correcto para double.
5.2 Por qué ocurre este tipo de error
La razón es que double representa los números usando binario.
Los humanos usamos base‑10, pero las computadoras internamente usan base‑2.
El problema clave es:
- Muchos decimales en base‑10 no pueden representarse con un número finito de dígitos binarios
- Por lo tanto, el sistema almacena la aproximación más cercana
0.1 y 0.2 no terminan en binario, así que se almacenan como valores que son “muy cercanos” pero no idénticos a los valores decimales exactos.
Al sumar esas aproximaciones se produce un resultado como 0.30000000000000004.
5.3 Asume siempre que pueden ocurrir errores
La mentalidad más importante es:
Con double, los errores de precisión son inevitables
Los errores se vuelven especialmente notorios en casos como:
- Repetir sumas/restas muchas veces
- Cálculos que implican división
- Cuando necesitas una corrección estricta hasta muchos decimales
En resumen, double no está diseñado para “decimales perfectamente exactos.”
5.4 Cuando los errores generalmente no importan
Por otro lado, hay muchos casos en los que los errores de precisión rara vez son un problema práctico.
Por ejemplo:
- Gráficos y animación
- Valores de sensores y datos estadísticos
- Computación científica
- Juegos y simulaciones
En estas áreas, lo que importa más que la igualdad exacta es poder calcular con precisión realista.
Ahí es donde double brilla.
5.5 Cómo deberías manejar los errores de precisión
Intentar eliminar los errores por completo a menudo rompe tu diseño.
En su lugar, sigue estos principios:
- Acepta que los errores “pueden ocurrir”
- Usa métodos de comparación/juzgamiento apropiados
- Usa enfoques diferentes cuando los errores no son aceptables
6. Trampa común #2: Usar “==” para comparar valores double es peligroso
Después de comprender los errores de precisión, el siguiente problema que casi todos encuentran es:
“¿Por qué la comparación no funciona como se espera?”
Un error muy común entre principiantes es comparar valores double usando ==.
6.1 Qué ocurre cuando usas “==”
Considera el siguiente código:
double a = 0.1 + 0.2;
double b = 0.3;
System.out.println(a == b);
Intuitivamente, podrías esperar true, pero el resultado puede ser false.
Esto se debe al error de precisión explicado anteriormente.
aestá cerca de0.30000000000000004bes una aproximación diferente que representa0.3
Porque estos valores no son idénticos a nivel de bits, == los reporta como diferentes.
6.2 La regla de oro para comparar valores double
Hay una regla fundamental que siempre debes recordar:
Nunca compares valores double para igualdad exacta
El operador == verifica si las representaciones internas son exactamente iguales, no si los valores están “lo suficientemente cerca.”
Esto lo hace inadecuado para números de punto flotante.

6.3 Comparar con un epsilon (tolerancia)
Al comparar valores double, deberías definir un umbral para
“qué tan cerca es lo suficientemente cerca.”
Este umbral se llama epsilon (tolerancia).
double a = 0.1 + 0.2;
double b = 0.3;
double epsilon = 1e-9;
if (Math.abs(a - b) < epsilon) {
System.out.println("Approximately equal");
}
Este enfoque verifica si:
- La diferencia absoluta es suficientemente pequeña
- Los valores pueden considerarse iguales para propósitos prácticos
6.4 ¿Cómo eliges un epsilon?
Una pregunta común entre principiantes es:
“¿Qué tan grande debe ser epsilon?”
La idea es simple. Basado en:
- La escala de los valores que manejas
- La cantidad de error que puedes tolerar
Algunas reglas empíricas típicas incluyen:
1e-9: seguro para muchos cálculos generales1e-12: muy estricto1e-6: adecuado para visualización o estimaciones aproximadas
No hay un único valor correcto.
Elige según tu caso de uso.
6.5 Cómo difiere esto de BigDecimal
Mirando un poco hacia adelante, observa la diferencia en la filosofía:
double: trabajar tolerando pequeños erroresBigDecimal: diseño que no permite error
Si la comparación parece “demasiado complicada”, puede ser una señal de que double no es la elección adecuada para esa tarea.
6.6 Resumen de reglas de comparación
- No uses
== - Compara usando diferencias absolutas
- Elige epsilon según el contexto
- Usa otros tipos si se requiere precisión estricta
7. Trampa común #3: La división entera produce cero
Incluso al usar double, puedes ver resultados que inesperadamente se convierten en 0.
Este es uno de los errores más comunes entre principiantes.
La causa es simple: el cálculo se realiza usando enteros.
7.1 Por qué ocurre la división entera
En Java, los tipos de los operandos determinan cómo se realiza un cálculo.
Considere este código:
double result = 1 / 2;
System.out.println(result);
La salida es:
0.0
Porque tanto 1 como 2 son int, Java realiza división entera primero, produciendo 0, que luego se convierte a double.
7.2 Cómo Realizar la División Decimal Correctamente
Evitar la división entera es fácil.
Haga que al menos un operando sea un double.
double result1 = 1 / 2.0;
double result2 = 1.0 / 2;
double result3 = (double) 1 / 2;
Todas estas producen:
0.5
7.3 Un Error Común en el Mundo Real
Este tipo de código se ve a menudo en aplicaciones reales:
int total = 5;
int count = 2;
double average = total / count;
Aunque parece correcto, el resultado es 2.0.
La forma correcta de calcular el promedio es:
double average = (double) total / count;
7.4 Reglas que los Principiantes Deben Recordar
- Siempre preste atención a los tipos en la división
- Entero ÷ entero produce un entero
- Recibir el resultado como
doubleno es suficiente
7.5 Resumen de la Trampa de la División Entera
- La causa son los tipos de los operandos y el orden de evaluación
- Use
doubledesde el inicio del cálculo - Sea especialmente cuidadoso con promedios y razones
8. Conversión Entre Strings y double (Lo Más Común en la Práctica)
En aplicaciones del mundo real, rara vez codifica valores double directamente.
Mucho más a menudo, necesita convertir cadenas (String) a números.
Ejemplos típicos incluyen:
- Valores de entrada de formularios
- Archivos CSV o JSON
- Archivos de configuración
- Respuestas de API
Esta sección explica formas seguras de convertir entre String y double.
8.1 Convertir una Cadena a double
8.1.1 Double.parseDouble()
El método más común y básico:
String text = "3.14";
double value = Double.parseDouble(text);
Si la cadena es un número válido, la conversión tiene éxito.
8.1.2 Manejar Cadenas Inválidas
Si la cadena no es numérica, se lanza una excepción:
String text = "abc";
double value = Double.parseDouble(text); // throws exception
Esto lanza un NumberFormatException.
En la práctica, siempre use try-catch:
try {
double value = Double.parseDouble(text);
} catch (NumberFormatException e) {
// error handling
}
8.2 Diferencia Entre Double.valueOf()
Double.valueOf() es otro método para convertir una cadena a un valor numérico.
Double value = Double.valueOf("3.14");
La diferencia entre los dos métodos es:
parseDouble→ devuelve un primitivodoublevalueOf→ devuelve un objeto contenedorDouble
Para cálculos numéricos normales, parseDouble es suficiente.
Al trabajar con colecciones como List<Double>, se usa comúnmente valueOf.
8.3 Convertir double a Cadena
Convertir un double a una cadena también es muy común.
double value = 3.14;
String text = String.valueOf(value);
Otra opción ampliamente utilizada es:
String text = Double.toString(value);
Ambos enfoques son seguros. Elija según el estilo o las convenciones del proyecto.
8.4 Siempre Formatee las Cadenas para la Visualización
Al mostrar números a los usuarios,
siempre use salida formateada.
double value = 3.14159;
String text = String.format("%.2f", value);
Esto formatea el valor a dos decimales.
8.5 Puntos Clave para la Conversión de Cadenas
- Siempre espere entradas inválidas y maneje excepciones
- Separe los cálculos internos del formateo de visualización
- Siempre controle los decimales al mostrar valores
La siguiente sección explica valores especiales de double: NaN e Infinity.
Sin entenderlos, depurar problemas numéricos se vuelve muy difícil.
9. Valores Especiales en la Clase Double (NaN / Infinity)
El tipo double incluye valores especiales que no son números ordinarios.
Entenderlos es esencial para programas robustos.
9.1 ¿Qué es NaN (Not a Number)?
NaN representa un resultado numérico indefinido.
Ocurre en cálculos como:
double value = 0.0 / 0.0;
System.out.println(value);
La salida es:
NaN
9.2 ¿Qué es Infinity?
Cuando el resultado de una división desborda, Java produce Infinity.
double value = 1.0 / 0.0;
System.out.println(value);
La salida es:
Infinity
Si el numerador es negativo, el resultado es -Infinity.
9.3 Cómo comprobar NaN e Infinity
Estos valores no pueden comprobarse de forma fiable usando ==.
Siempre use los métodos dedicados:
double value = 0.0 / 0.0;
if (Double.isNaN(value)) {
System.out.println("Value is NaN");
}
if (Double.isInfinite(value)) {
System.out.println("Value is infinite");
}
9.4 Por qué es importante la detección temprana
Si NaN o Infinity se propagan a través de los cálculos, pueden causar:
- Que todos los resultados posteriores se conviertan en NaN
- Valores inválidos mostrados en la interfaz de usuario
- Lógica de la aplicación rota
Detecte valores anormales lo antes posible.
10. Use BigDecimal para dinero y cálculos exactos
Como se ha mostrado hasta ahora, double es muy conveniente,
pero no puede evitar completamente los errores de precisión.
Por lo tanto, no es adecuado para:
- Cálculos monetarios
- Gestión de puntos o saldos
- Requisitos estrictos de redondeo
10.1 ¿Qué es BigDecimal?
BigDecimal es una clase que maneja números decimales exactamente en base 10.
Está diseñada para evitar la pérdida de precisión.
BigDecimal a = new BigDecimal("0.1");
BigDecimal b = new BigDecimal("0.2");
BigDecimal result = a.add(b);
System.out.println(result); // 0.3
10.2 Regla importante al usar BigDecimal
Crear un BigDecimal directamente a partir de un double transfiere los errores de precisión.
new BigDecimal(0.1); // Not recommended
Siempre créelo a partir de una cadena en su lugar:
new BigDecimal("0.1"); // Correct
10.3 Elegir entre double y BigDecimal
- Rendimiento y simplicidad →
double - Precisión por encima de todo →
BigDecimal
No fuerce todo a un solo tipo.
Elija según el propósito.
11. Resumen: Uso correcto de double en Java
Resumamos los puntos clave de este artículo:
doublees el tipo decimal fundamental de Java- Los errores de precisión forman parte de la especificación
- Use tolerancias para la comparación
- Cuidado con la división entera
- Use
BigDecimalpara cálculos exactos
Una vez que comprenda cómo funciona double,
la programación numérica deja de ser tan intimidante.
12. Preguntas frecuentes (FAQ)
P1. ¿Cuántos dígitos son precisos en Java double?
Alrededor de 15–17 dígitos significativos. Los valores decimales se manejan como aproximaciones.
P2. ¿Debería usar double o float?
En la mayoría de los casos, use double a menos que tenga una razón importante para elegir float.
P3. ¿Es malo usar double para dinero?
Sí. No se recomienda. Use BigDecimal para cálculos monetarios seguros.
P4. ¿Puedo usar “==” para comparar valores double?
No. Use una tolerancia (epsilon) en su lugar.
P5. ¿Cómo debo manejar NaN e Infinity?
Use Double.isNaN() y Double.isInfinite() para detectarlos temprano y manejarlos explícitamente

