2016-08-15 4 views
-2

Ich versuche, String in Double zu konvertieren. String enthält ein Pluszeichen, das in der analysierten Zeichenfolge nicht zurückgegeben wird.Double parseDouble ignorieren Zusatz (+) Zeichen, die Teil der Zeichenfolge ist

String s = "+12.350"; 
Double parsedString = Double.parseDouble(s); 

Ausgabe

12.350 

Es funktioniert gut, wenn die Zeichenfolge hat "-" in ihm.

+2

Dieser Code kompiliert nicht einmal. Bitte geben Sie den tatsächlichen Code an. – mszymborski

+0

Was würden Sie von der Ausgabe erwarten? –

+2

Denken Sie daran, dass 'parseDouble' ein' double' zurückgibt, das nur ein Wert ist - es gibt nicht die Formatierung für diesen Wert an. '+ 12.350' unterscheidet sich nicht von' 12.350'. Sie haben genau den gleichen Wert und genau die doppelte Darstellung. Die Standardformatierung für Doubles enthält kein Präfix "+" für positive Zahlen, aber das ist nur eine Formatierungsoption. – yshavit

Antwort

0

Double.parseDouble(s); gibt eine Doppel keinen String, wird der Code nicht kompilieren ...

für die convertions verwenden:

public static void main(String[] args) { 
String s = "+12.350"; 
double parsedString = Double.parseDouble(s); 
System.out.println(parsedString); 
double pi = 3.1415; 
String parsedDouble = String.valueOf(pi); 
System.out.println(parsedDouble); 
} 
0

Ja, positive verdoppelt haben nie auf das Pluszeichen vor Sie. Wenn der String ein Minuszeichen hat, trägt das Double auch das Minuszeichen, wie es beim Schreiben der Zahl üblich ist (dh Sie schreiben -4,5, aber nicht +4,5). Wenn Sie auf das Pluszeichen wollen, müssen Sie es hinzufügen als String zu Beginn auf:

System.out.println((parsedString > 0) ? "+" : "" + parsedString); 

Allerdings sollte dieser Code sowieso nicht kompilieren, da Double.parseDouble() ein Doppelzurückgibt, nicht ein String so sollte String parsedString = Double.parseDouble(s); nicht funktionieren, da Sie versuchen, ein Double zu einem String zu machen.

1

können Sie DecimalFormat verwenden

DecimalFormat fmt = new DecimalFormat("+#,###0.000;-#"); 
String s = "+12.350"; 
Double parsedString = Double.parseDouble(s); 
System.out.println(fmt.format(parsedString)); // +12.350 

s = "-12.350"; 
parsedString = Double.parseDouble(s); 
System.out.println(fmt.format(parsedString)); // -12.350 

Java IdeOne example

Verwandte Themen