Ich versuche, eine kleine doppelte Nummer wie 6.67e-11
zu drucken, aber Double.toString() gibt 0
zurück. Was kann ich tun, um es stattdessen 6.67e-11 (oder etwas Ähnliches) zu drucken?Konvertieren sehr kleine doppelte Werte in Zeichenfolge (mit wissenschaftlicher Notation) (Java)
Antwort
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.
+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. "* –
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 ... –
Bitte werfen Sie einen Blick auf ['DecimalFormat'] (http://download.oracle.com/javase/tutorial/i18n/format/decimalFormat.html). – Mot