2013-06-25 65 views
5

我工作,我感到震驚處理以下如何格式化用十進制數字

提到負的情況。如果值是工作變量量雙小於1,那麼我想格式化(添加)4小數點指向它。

例如,如果值是0.4567,然後我需要0.4567

否則,如果該值大於1名的格式只有2位。

例如,如果值是444.9然後我需要444.90

一切上述工作正常,但擊中此以下條件

即如果該值小於1,並將其端部作爲零( 0.1000,0.6000),這是沒有意義的打印0.2000,所以在這種情況下,我所要的輸出只有0.20

這是我下面的程序

package com; 
import java.text.DecimalFormat; 
public class Test { 
    public static void main(String args[]) { 
     try { 
      String result = ""; 
      Test test = new Test(); 
      double value = 444.9; 
      if (value < 1) { 
       result = test.numberFormat(value, 4); 
      } else { 
       result = test.numberFormat(value, 2); 
      } 
      System.out.println(result); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
    public String numberFormat(double d, int decimals) { 
     if (2 == decimals) 
      return new DecimalFormat("#,###,###,##0.00").format(d); 
     else if (0 == decimals) 
      return new DecimalFormat("#,###,###,##0").format(d); 
     else if (3 == decimals) 
      return new DecimalFormat("#,###,###,##0.000").format(d); 
     else if (4 == decimals) 
      return new DecimalFormat("#,###,###,##0.0000").format(d); 
     return String.valueOf(d); 
    } 

} 
+0

基於x < 1 || x > = 1的條件,那麼如果它<1並以「00」結束,則將它們切斷? –

回答

6

使用#如果你想在第三和第四位小數忽略0

new DecimalFormat("#,###,###,##0.00##").format(d) 
+1

如果它的工作,這個答案肯定比我的更好:) – Dariusz

+0

@ Dariusz-它應該工作。測試它。 – chetan

+0

@chetan真的很棒,非常感謝。 – Pawan

0

只是做一個字符串四位數字和檢查尾隨零。如果有兩個零或更少,請刪除它們。否則,請保持原樣。

result = test.numberFormat(value, 4); 
if (result.endsWith("00")) { 
    result=result.substring(0, result.length()-2); 
} else if (result.endsWith("0")) { 
    result=result.substring(0, result.length()-1); 
} 

它可能不是最佳的,但它很容易閱讀和維護。

+0

@chetan,如果值爲0.0007(結尾有3個零和一個數字),它似乎是一個錯誤。 – Pawan

相關問題