2016-03-16 105 views
0

我有一個打印格式的小問題。 如果數字 不是一個整數(例如55.53467 - > 55.53)和小數點後一位數 如果數字是整數或小數點後有一個圓整數,我想在小數點後打印2位數字(對於 示例2.00→2.0或5.10→5.1)。如何在小數點後打印最多2位數字?

片的,我有代碼是:

public String toString() { 

    return String.format("%+.2f%+.2fX%+.2fX^2%+.2fX^3%+.2fx^4", this.A0.getCoefficient() 
                   , this.A1.getCoefficient() 
                   , this.A2.getCoefficient() 
                   , this.A3.getCoefficient() 
                   , this.A4.getCoefficient()); 
} 

但它始終打印2位當然。 非常感謝

+1

「它總是打印過程中的兩個數字。」然後改變它。使用'if' /'else'邏輯。 –

+1

爲什麼?爲什麼不只是說2.00,保持統一?如果參數是「第二個零不能添加任何東西」,那麼肯定但第一個也不會。如果你想展示一個公式,「2x + 4.3y」是有道理的,「2.0x + 4.3y」不是。 –

+1

[Formatting Floating Point Numbers]的可能重複(http://stackoverflow.com/questions/4733089/formatting-floating-point-numbers) –

回答

0

你可能想利用DecimalFormat的,例如:

public static String format(double num, double places) { 
    String format = "#."; 
    for(int i=0; i<places; i++) format += "0"; 
    DecimalFormat df = new DecimalFormat(format); 
    return df.format((int)(num * Math.pow(10, places))/(double) Math.pow(10, places)); 
} 

然後,你可以用它來任意小數位:

System.out.println(format(1, 2)); // 1.00 
System.out.println(format(234, 2)); // 234.00 
System.out.println(format(-55.12345, 2)); // -55.12 
System.out.println(format(7.2, 2)); // 7.20 
0

在這種情況下,我會用DecimalFormat「0.0#」(#表示:只設置,如果不是零)格式化到String-Vars並將結果傳遞給函數String.format。

相關問題