number - string format arguments java
Java7 Double.toString() devuelve 0.005/java6 es 0.0050 (1)
Este fue un error en Java 1.3 a 1.6 (resuelto en 1.7).
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4511638 El informe de errores http://bugs.sun.com/view_bug.do?bug_id=4428022 contiene más detalles. Corregido en JDK 7 (b75).
Informes relacionados - Citado desde el enlace de arriba.
- Puerto trasero: JDK-2181423 - System.out.println (0.001) produce 0.0010
- Duplicar: JDK-5078240 - Double.toString (double) agrega un cero final en ciertos casos
- Duplicar: JDK-6575880 - Float.toString (float) agrega ceros al final
- Relatos: JDK-6935102 - Regtest
Closed / sun / misc / FloatingDecimal / ToString.java ahora está fallando. - Relatos: JDK-4154042 - java.lang.FloatingDecimal podría ser eliminado
Los cambios para que OpenJDK 7 solucione este problema están disponibles en: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/f85aa3aedf41
Estoy actualizando de JDK6 a JDK7 . El siguiente código de demostración muestra un cambio menor en Double.toString()
public class StringDemo
{
public static void main(String[] args)
{
System.out.println(Double.toString(.0005));
System.out.println(Double.toString(.005)); //different string
System.out.println(Double.toString(.05));
System.out.println(Double.toString(.5));
}
}
JRE6
5.0E-4
0.0050
0.05
0.5
JRE7
Estoy buscando cualquier documentación relacionada con el cambio anterior. La página de compatibilidad no lo cubre.
5.0E-4
0.005 //changed.
0.05
0.5
La salida se guardó en muchos archivos de referencia y se comparó por comparación de cadenas. Necesito corregir la comparación, pero tengo curiosidad por saber más detalles sobre este cambio. Respuesta autoritaria sobre por qué este cambio tendrá recompensa.