2013-04-04 9 views
23

Sto aggiornando da JDK6 to JDK7. Il codice seguente dimostra mostra una piccola modifica nel Double.toString()Java7 Double.toString() restituisce 0,005/java6 è 0,0050

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

Cerco qualsiasi documentazione relativa al cambiamento di cui sopra. La pagina di compatibilità non lo copre.

5.0E-4 
0.005 //changed. 
0.05 
0.5 

L'output è stato salvato in molte file di riferimento, e rispetto da stringa comparison- ho bisogno di fissare il confronto, ma curioso di conoscere maggiori dettagli su questo cambiamento. Risposta autorevole sul motivo per cui questo cambiamento diventerà generoso.

+3

Un altro galleggiante parsing bug in Java che causerebbe il compilatore per andare in un ciclo infinito era un po 'più interessante, però. http://www.exploringbinary.com/java-hangs-when-converting-2-2250738585072012e-308/ – devnull

risposta

28

Questo era un bug in Java 1.3 a 1.6 (risolto in 1.7).

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4511638 Il bug report http://bugs.sun.com/view_bug.do?bug_id=4428022 contiene ulteriori dettagli. Risolto in JDK 7 (b75).

Rapporti correlati - Citato dal link sopra.

  • Backport: JDK-2.181.423 - System.out.println (0,001) emette 0,0010
  • Duplicate: JDK-5.078.240 - Double.toString (doppia) aggiunge uno zero finale in taluni casi
  • Duplicate: JDK-6575880 - Float.toString (float) aggiunge finali zeri
  • riferisce: JDK-6.935.102 - Regtest
    chiuso/sole/misc/FloatingDecimal/ToString.java ora fallendo.
  • racconta: JDK-4.154.042 - java.lang.FloatingDecimal potrebbe essere eliminato

I cambiamenti per OpenJDK 7 per risolvere questo problema sono disponibili presso: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/f85aa3aedf41

+0

Grazie! Semplicemente fantastico – Jayan

Problemi correlati