2015-09-04 56 views
1

我從j表中獲取值。我想在小數點後兩位顯示成本,在小數點後面顯示數量。在Java中以double值設置2個小數位

目前兩個輸出一個小數位(123.0)

如何解決這個問題;

DecimalFormat df= new DecimalFormat("0.00");  

      int i = tableSale.getRowCount();   
      String id = (String) tableSale.getValueAt(i-1, 0); 
      String name = (String) tableSale.getValueAt(i-1, 1); 
      double dcost = (double) tableSale.getValueAt(i-1, 2); 
      double cst=Double.valueOf(df.format(dcost));//setting 2 decimal places 
      String cost = String.valueOf(cst);//converting double to string 

      double dqty = (double) tableSale.getValueAt(i-1, 3); 
      DecimalFormat dd=new DecimalFormat("0"); 
      double qt = Double.valueOf(dd.format(dqty)); 
      String qty = String.valueOf(dqty);//converting double to string 

      double ditemDiscount = (double) tableSale.getValueAt(i-1, 4); 
      String itemDiscount = String.valueOf(ditemDiscount);//converting double to string 

      double dgrossTotal = (double) tableSale.getValueAt(i-1, 5); 
      double gTotal=Double.valueOf(df.format(dgrossTotal));//setting 2 decimal places 
      String grossTotal = String.valueOf(gTotal);//converting double to string 
+0

double沒有'2個小數'的地方。 df.format給出了一個有兩位小數的字符串。使用它。 – matt

+0

http://stackoverflow.com/questions/2808535/round-a-double-to-2-decimal-places重複 –

回答

1
double d; 
System.out.printf(".2f",d); 
0

嘗試

String.format("%.2f", 123.0) //兩個小數點。

String.format("%.0f", 123.0)對於沒有小數點//。

輸出:

123.00 
    123 
0

對於成本我會建議對雙。改用BigDecimal。

至於格式:

String.format("%.2d", dcost);String.format("%.0d", qty);可以使用。

2

我認爲你可以這樣做:

double dcost = (double) tableSale.getValueAt(i-1, 2); 
String text = new DecimalFormat("##.##").format(dcost); 

對於其餘的雙重價值相同。

希望得到這個幫助!

+0

非常緊湊和簡單的代碼。謝謝! –

+0

謝謝伊戈爾...希望這個幫助 –

0

如果你想四捨五入到小數點後兩位,你可以使用這個函數。

double dcost = round2(tableSale.getValueAt(i-1, 2)); 

這可以避免格式化字符串的開銷,因此您可以解析它。

private static final double WHOLE_NUMBER = 1L << 53; 
public static double round2(double d) { 
    final double factor = 1e2; 
    return d > WHOLE_NUMBER || d < -WHOLE_NUMBER ? d : 
      (long) (d < 0 ? d * factor - 0.5 : d * factor + 0.5)/factor; 
} 

您可以調整factor品嚐。

相關問題