2010-06-17 19 views
17

wiem, że jeśli chcemy wyświetlić double jako dwie cyfry po przecinku, można by po prostu trzeba użyćDouble.ToString N Liczba miejsc po przecinku

public void DisplayTwoDecimal(double dbValue) 
{ 
    Console.WriteLine(dbValue.ToString("0.00")); 
} 

Ale jak rozszerzyć to N miejsc po przecinku , gdzie N jest określony przez użytkownika?

public void DisplayNDecimal(double dbValue, int nDecimal) 
    { 
    // how to display 
    } 

Odpowiedz

48

Użyj "Nx" dla x cyfry dziesiętnej.

public void DisplayNDecimal(double dbValue, int nDecimal) 
{ 
    Console.WriteLine(dbValue.ToString("N" + nDecimal)); 
} 
+13

stronę efekt użycia Nx polega na tym, że liczba będzie sformatowana za pomocą separatorów tysięcy, tj. "1.234.5600" –

+5

Jeśli nie chcesz separatorów tysięcy, możesz użyć 'Fx' – Aidiakapi

-4

użyłbym to:

public string DisplayNDecimal(double dbValue, int nDecimal) 
{ 
    string decimalPoints = "0"; 
    if (nDecimal > 0) 
    { 
     decimalPoints += "."; 
     for (int i = 0; i < nDecimal; i++) 
      decimalPoints += "0"; 
    } 
    return dbValue.ToString(decimalPoints); 
} 

:)

Oto jej StringBuilder (choć prawdopodobnie nie bardziej wydajny i na pewno wymaga więcej zasobów)

public string DisplayNDecimal(double dbValue, int nDecimal) 
{ 
    StringBuilder decimalPoints = new StringBuilder("0"); 
    if (nDecimal > 0) 
    { 
     decimalPoints.Append("."); 
     for (int i = 0; i < nDecimal; i++) 
      decimalPoints.Append("0"); 
    } 
    return dbValue.ToString(decimalPoints.ToString()); 
} 
+2

Dlaczego nie używać wbudowanych formaterów ?? –

+1

Należy pamiętać, że to nie będzie działać dla wszystkich kultur, ponieważ wszystkie kultury nie używają kropki dla kropki dziesiętnej. –

Powiązane problemy