Doppelter Wert mit spezifischer Genauigkeit in Java

8

Ich programmiere ein einfaches Java-Programm. Ich muss eine Zeichenfolge von der Eingabe erhalten und es in zwei Teile teilen: 1-double 2-string. Dann muss ich eine einfache Berechnung für das Doppelte machen und das Ergebnis mit einer bestimmten Genauigkeit an den Ausgang senden (4). Es funktioniert gut, aber es gibt ein Problem, wenn die Eingabe 0 ist, dann funktioniert es nicht richtig.

Für diese Eingabe wird zum Beispiel ausgegeben:

1 kg
Ausgabe: 2.2046

3,1 kg
Ausgabe: 6.8343

Aber wenn die Eingabe 0 ist, sollte die Ausgabe 0,0000 sein, aber es zeigt 0,0. Was soll ich tun, um es zu zwingen, 0.0000 zu zeigen?

Ich habe einen ähnlichen Beitrag über doppelte Genauigkeit gelesen, sie schlagen etwas wie BigDecimal class vor, aber ich kann sie in diesem Fall nicht verwenden, Mein Code dafür ist:

%Vor%     
MehrdadSComputer 22.09.2013, 17:01
quelle

5 Antworten

18
Mit

DecimalFormat können Sie festlegen, wie viele Ziffern angezeigt werden sollen. Eine '0' wird eine Ausgabe von Ziffern erzwingen, auch wenn der Wert Null ist, während ein '#' Nullen weglassen wird.

System.out.print(new DecimalFormat("#0.0000").format(value)+" kg\n"); sollte zum Trick.

Weitere Informationen finden Sie in der Dokumentation

Hinweis: Bei häufiger Verwendung sollten Sie den Formatierer aus Performancegründen nur einmal instanziieren und den Verweis speichern: final DecimalFormat df = new DecimalFormat("#0.0000"); . Dann benutze df.format(value) .

    
Blacklight 22.09.2013, 17:05
quelle
4

Fügen Sie diese Instanz von DecimalFormat am Anfang Ihrer Methode hinzu:

%Vor%

Rufen Sie dann die Instanz "vier" auf und übergeben Sie Ihren doppelten Wert, wenn Sie Folgendes anzeigen:

%Vor%     
Michael Yaworski 22.09.2013 17:27
quelle
1

Ich empfehle Ihnen, die Klasse BigDecimal für die Berechnung mit Gleitkommawerten zu verwenden. Sie können die Genauigkeit der Fließkomma-Arithmetik steuern. Aber zurück zum Thema:)

Sie könnten Folgendes verwenden:

%Vor%

gibt Ihnen die folgende Ausgabe:

%Vor%     
Ortwin Angermeier 22.09.2013 17:35
quelle
0

String.format erstellt nur eine String-Darstellung des Gleitkommawerts. Wenn es keine Flag für eine minimale Genauigkeit bereitstellt, dann füllen Sie einfach das Ende der Zeichenfolge mit Nullen.

    
Aaron 22.09.2013 17:08
quelle
0

Verwenden Sie DecimalFormat , um Ihren doppelten Wert zu fixieren Präzisions-String-Ausgabe.

  

DecimalFormat ist eine konkrete Unterklasse von NumberFormat, die formatiert   Dezimal Zahlen. Es hat eine Vielzahl von Funktionen entwickelt, um es zu machen   Es ist möglich, Zahlen in jedem Gebietsschema zu analysieren und zu formatieren, einschließlich der Unterstützung   für westliche, arabische und indische Ziffern. Es unterstützt auch verschiedene   Arten von Zahlen, einschließlich Ganzzahlen (123), Festkommazahlen   (123.4), wissenschaftliche Notation (1.23E4), Prozentsätze (12%) und Währung   Beträge ($ 123). Alle diese können lokalisiert werden.

Beispiel -

%Vor%     
Subhrajyoti Majumder 22.09.2013 17:03
quelle

Tags und Links