2010-12-12 9 views

Antwort

2

kann nicht reproduzieren:

public class Test { 

    public static void main(String args[]) 
    { 
     double d = 6.67e-11; 

     System.out.println(Double.toString(d)); // Prints "6.67E-11" 
    } 
} 

IIRC, kehrt Double.toString() immer eine Zeichenfolge, die der genaue Wert ermöglicht Double.parseDouble() sein Rund ausgelöst werden.

Meine Vermutung ist, dass Sie nicht tatsächlich haben einen kleinen Wert - das Sie haben 0, aufgrund einiger Rundungsfehler in anderen Operationen.

+0

+1 - Das Javadoc bestätigt Ihre Erinnerung: * "Wie viele Ziffern müssen für den Bruchteil von m oder a gedruckt werden? Es muss mindestens eine Ziffer geben, um den Bruchteil darzustellen, und darüber hinaus so viele, aber nur so viele , mehr Ziffern, die benötigt werden, um den Argumentwert eindeutig von benachbarten Werten des Typs double zu unterscheiden. "* –

+0

Verdammt, Sie haben Recht. Double.toString() funktionierte wie ich wollte, der Fehler war in einem anderen Teil des Codes. Ich denke, ich hätte mehr testen sollen, bevor ich gefragt habe ... –