2017-04-11 1 views
-3

Wie kann ich die Tailing-Nullen von der Rückgabe einer Funktion entfernen? Hier ist die Funktion, die in einer anderen Klasse ist.Entfernen der nachfolgenden 0 von der Rückgabe einer Funktion

static public double Area(double side1,double side2){ 
    return side1*side2; 
} 

und hier ist die aufrufende Funktion

System.out.println("Side 1 : "); 
b1=new Scanner(System.in); 
double side1=b1.nextDouble(); 
System.out.println("Side 2: "); 
b2=new Scanner(System.in); 
double side2=b2.nextDouble(); 
System.out.println("Area= "+Rectangle.Area(side1, side2)); 

Für side1 = 10 und side2 = 10 der Ausgang

Area = 100.0 

, während ich es

sein wollen wird
Area = 100 

und zum Beispiel für die Werte 0,25 und 2 wird

Area = 0.5 
+8

Verstehen Sie, dass es keinen Unterschied in der Darstellung zwischen 100 und 100,0? Es ist so, als würde man eine Methode fragen, um ein 'int' in hex anstelle von dezimal zurückzugeben ... es ist nur eine Zahl. (Das Konzept von "a trailing zero" gilt nur für "double", wenn Sie es als String formatieren. Das ist jedoch bei so etwas wie "BigDecimal" nicht der Fall.) –

+5

Nachgestellte Nullen sind ein Artefakt dafür, wie Sie einen Wert anzeigen. Es ist nicht etwas, das als Teil des Wertes gespeichert wird. Java! = Cobol – azurefrog

+0

Wenn Sie diese bei der Ausgabe/Konvertierung in string ablegen wollen: [* Doppelter Wert formatieren? *] (Http://stackoverflow.com/questions/24493051/java-format-double-value) –

Antwort

0

Sie DecimalFormat verwenden 0.

Hinter die Dezimalzahlen oder fallen zu begrenzen, um Dezimalstellen zu begrenzen

double area = 0.1234; 
DecimalFormat numberFormat = new DecimalFormat("#.00"); 
System.out.println(numberFormat.format(area)); 

Es gibt Ausgang als 0.12

Sie Anzahl von verwenden können 0 ist wie pro Anforderung.

OR

System.out.printf("%.2f", area); 

Wenn Sie 0 Verwendung fallen nachlauf #.# so wird 0.500.5 sein

DecimalFormat numberFormat = new DecimalFormat("#.#"); 
Verwandte Themen