2010-06-17 19 views
17

sé que si queremos mostrar una double como dos dígitos decimales, uno sólo tendría que utilizarDouble.ToString con N Número de lugares decimales

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

Pero cómo extender esto a N cifras decimales , donde N es determinado por el usuario?

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

Respuesta

48

Utilice "Nx" para obtener x decimales.

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

lado El efecto de usar Nx es que el número se formateará con miles de separadores, es decir, "1,234.5600". –

+5

Si no desea miles de separadores, puede usar 'Fx' – Aidiakapi

-4

usaría esto:

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); 
} 

:)

Aquí es con StringBuilder (aunque probablemente no sea más eficiente y sin duda requeriría más recursos)

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

¿Por qué no utilizar formateadores integrados? –

+1

Tenga en cuenta que esto no funcionará para todas las culturas ya que todas las culturas no usan un punto decimal. –

Cuestiones relacionadas