thousands number java number-formatting

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.