2009-10-19 71 views
14

Tengo un número decimal, digamos 1234.500.Agregue el separador de coma mil a decimal (.net)

Quiero conseguir que se muestre 1,234.4

Im actualmente convertirlo en un doble para quitar el terminador '0 del.

string.Format ("{0: 0,0}", 1234.500) elimina el lugar decimal, y otras opciones de formato parecen usar dos decimales independientemente.

¿Alguien puede ofrecer una idea?

+0

Editar, sólo para aclarar 1.234,560, yo esperaría 1,234.56 – maxp

+0

¿Quieres mostrar como 1234 *. * 5 ** ¿verdad? Edita la publicación para reflejar eso. – Amarghosh

+0

¿Desea utilizar la configuración del sistema local o simplemente forzar a la aplicación a formatearla de esta manera? –

Respuesta

18

se debe utilizar un formato personalizado como #,##0.00

string s = string.Format("{0:#,##0.00}", xx); 

Producirá 1,234.50 cuando xx = 1234.5M
olvidarse de convertir a double, que no será de gran ayuda.

+0

No quiero cero cero – maxp

+1

Luego quite 1 o más ceros: #, ## 0. o hacerlos opcionales: #, ## 0. # –

+0

Gracias por la ayuda. – maxp

0

¿Has probado esto?

String.Format("{0:0,0.00}", 1234.560); 
+0

No elimina los ceros finales del decimal - prueba String.Format ("{0: 0,0.00}", 1234.5) – maxp

6

Otra alternativa:

decimal d = 1234.56m; 
string s = d.ToString("N"); // 1,234.56 
9

¿Sabe usted que .NET se ha incorporado en el apoyo a los números de formatear correctamente según los ajustes de los regionales de cada usuario de su aplicación? Podría ser mejor aprovechar la configuración regional propia del usuario (el framework .NET ya conoce todas las configuraciones correctas).

Sin embargo, si quiere arreglar su aplicación para formatear números en una configuración regional particular, puede utilizar una configuración regional particular y forzar a .NET a utilizarla como base de todo el formateo (no solo de números) :

using System.Globalization; 
using System.Threading; 
... 
CultureInfo us = new CultureInfo("en-US"); 

y luego

Thread.CurrentThread.CurrentUICulture = us; 

o simplemente

Console.WriteLine(d.ToString("c", us)); 

Debe tener en cuenta que el uso de comas como separador de miles es apropiado para el Reino Unido y EE.UU., pero no es cómo miles deben mostrarse en otros países

"mil y de veinte y cinco es muestra como 1.025 en Estados Unidos y 1.025 en Alemania. En Suecia, el separador de miles es un espacio"

MSDN has dedicated section dedicado a este tema, que ellos llaman 'globalización' (es decir, que es un buen término de búsqueda si alguna vez necesita para cazar más detalle). Esa página describe cómo el el uso del signo libra funciona como un marcador de posición de dígitos para la eliminación de los ceros de la izquierda (como se sugiere por Henk Holterman en un comentario anterior).

Ver también Custom Numeric Format Strings.

0

probar esto!

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged 
     Try 
      TextBox1.Text = Format(CInt(TextBox1.Text), "#,#") 
      TextBox1.SelectionStart = TextBox1.Text.Length 
     Catch ex As Exception 

     End Try 

End Sub 
0

Prueba esto:

string myNumber = string.Format("{0:#,0.00}", 1234.500); 

(he visto esto en RDLC informes)

Cuestiones relacionadas