2010-08-11 58 views
34

Estoy tratando de formatear el contenido de un cuadro de texto:Cómo insertar un separador de miles (coma) con convert duplicar

this.lblSearchResults1.Text = 
    Convert.ToDouble(lblSearchResults1.Text).ToString(); 

¿Cómo puedo modificar esto de modo que el texto incluye comas/mil separadores ?

es decir, 1000 en lugar de 1000.

+0

También encontré esto bastante útil http://john-sheehan.com/blog/wp-content/uploads/msnet-formatting-strings.pdf –

+2

Mire esta respuesta http://stackoverflow.com/questions/752145/use-a-custom-thousand-separator-in-c –

Respuesta

40

Para control personalizado completa, utilice ... .ToString("#,##0.00") o variaciones de los mismos. Usted puede hacer sus propias imágenes, como 0.0#

Para utilizar un patrón en función de los usuarios (o en un seleccionado) cultura, utilizar The Numeric ("N") Format Specifier, como en .ToString("N") o "... {0:N}".

+0

Estoy siguiendo este enfoque, pero obtengo el resultado invertido en Windows Server 2012, '530000' se convierte en' 000,530' – Akbari

+0

Investigue a fondo y luego publique una pregunta por separado con un [ejemplo verificable] (http://stackoverflow.com/help/mcve). Incluye la configuración de cultura de la computadora. –

62

Mirando el standard numeric format strings:

Puede más fácil de usar 'N' que hacer lo correcto basado en la cultura del usuario, por lo que en su caso se puede simplemente añadir "N" como un parámetro a la ToString

([double]12345.67).ToString("N") 

12,345.67

+13

Esta debería ser la respuesta aceptada. – jwueller

+0

Esta respuesta es ligeramente mejor que ToString ("#, ## 0.00"), que funciona igual y respeta los diferentes miles de separadores en diferentes culturas (por ejemplo, "." En Alemania y "'" en Suiza). Pero ToString ("N") aclara que el formato puede ser específico de una cultura. – Knasterbax

+0

Respetar la cultura individual en esta me da la victoria.Sin embargo, ¿qué pasa con mostrar un número entero como un entero, en lugar de un flotante? – Xonatron

0

La forma más sencilla de hacerlo sería algo así como:

Convert.ToDouble("1234567.12345").ToString("N") 

Si desea controlar el número de decimales que puede hacer algo como:

Convert.ToDouble("1234567.12345").ToString("N3") 

En vistazo general a las sobrecargas en ToString de posibilidades más emocionantes.

4

Si usted echa un vistazo más de cerca a Standard Numeric Format Strings puede probar uno de los siguientes:

.ToString("n", CultureInfo.GetCultureInfo("en-US")) 
.ToString("n", CultureInfo.GetCultureInfo("de-DE")) 
.ToString("n", CultureInfo.CurrentCulture) 
5

Una alternativa a lo anterior mencionado respuestas sería utilizar

this.lblSearchResults1.Text = String.Format("{0:N}", Convert.ToDouble(lblSearchResults1.Text)) 

Si quieres cifras decimales , simplemente ingrese la cantidad de decimales que desea tener después de N. El siguiente ejemplo devolverá el valor con 2 decimales.

this.lblSearchResults1.Text = String.Format("{0:N2}", Convert.ToDouble(lblSearchResults1.Text)) 

Ver http://msdn.microsoft.com/en-us/library/system.string.format.aspx para más información.

Cuestiones relacionadas