2011-05-28 115 views
8

Deseo agregar una coma a números decimales cada 3 dígitos usando C#.
de escribir este código:Agregue coma a los números cada tres dígitos con C#

double a = 0; 
a = 1.5; 
Interaction.MsgBox(string.Format("{0:#,###0}", a)); 

pero vuelve 2.
¿Dónde estoy mal?
Describa cómo puedo solucionarlo?

+1

Dupe de http://stackoverflow.com/questions/105770/net-string-format-to-add-commas-in-thousan ds-place-for-a-number –

+1

@raj: las respuestas aquí son diferentes. – GregC

+0

@GregC Sin embargo, no necesariamente mejores [que el aceptado allí] (http://stackoverflow.com/a/105793/1028230). ; ^) – ruffin

Respuesta

9
double a = 1.5; 
Interaction.MsgBox(string.Format("{0:#,###0.#}", a)); 
+0

Está bien gracias, ¿podrías describir el primer argumento de string.Format? – Shahin

+0

En la cadena de formato, no estaba direccionando la parte decimal del número, por lo que estaba redondeando a 2. Por lo tanto, el. # En la cadena de formato se dirige a eso y si siempre quiere que se muestre una parte decimal, incluso para, digamos 2.0 luego use .0 en la cadena de formato. –

+0

Tengo una pregunta: ¿el formato en la respuesta es diferente de '#, 0. #'? –

3

Aquí es cómo hacerlo:

string.Format("{0:0,0.0}", a) 
2

Su haciendo bien. #, ## 0 significa escribir al menos un dígito y cero decimales y grupos de dígitos espaciales con comas. Por lo tanto, redondea 1.5 a 2 ya que no puede escribir decimales. Pruebe #, ## 0.00 en su lugar. Usted obtendrá 1,50

2

intente lo siguiente formato:

string.Format("{0:#,0.0}", a) 
+0

Gracias, ¿Podría describir el código? – Shahin

+0

Funciona, pero para el número 10 devuelve 10.0, ¿debo reemplazar 10.0 con nada o es posible mejorar la cadena? ¿Función de formato? – Shahin

+0

@shaahin, los formatos de cadena para dobles se explican muy bien en [este artículo] (http://www.csharp-examples.net/string-format-double/). En lo que concierne a 10.0 si no quiere el decimal si es 0, podría usar '{0: #, #. #}'. –

1

Quizás quiso juzgados por esto: -

string.Format("{0:0,000.0}", 1.5); 
2

Hay una standard format string que separará mil unidades: N

float value = 1234.512; 

value.ToString("N"); // 1,234.512 
String.Format("N2", value); // 1,234.51 
Cuestiones relacionadas