2009-11-23 19 views
6

Quiero mostrar un número con comas y punto decimalnúmero de pantalla con comas y puntos decimales

CASE1: ejemplo, si el número es pantalla 3494309432324

como 34,94,30,94,32,324 pero no 34,94,30,94,32,324.00

caso 2: si el número tiene valores decimales ellos hasta 2 puntos decimales con comas y

pantalla como 12,22,222.32

Actualmente hago esto por 2 cifras decimales, pero no me llevo las comas

Label9.Text = sisRatio.ToString("#0.00");

cualquier sugerencia ..

gracias

+0

Por curiosidad: ¿Por qué quiere separar el número después de * dos * dígitos (en lugar de después de * tres * dígitos)? – Heinzi

+1

@Heinzi: Creo que la pregunta está relacionada con la forma en que se representan los números en India. –

+0

@Fredrik: Gracias, eso es bueno saberlo. – Heinzi

Respuesta

11

Suponiendo que desea el habitual 3 insensibles res a continuación una coma, creo que esto va a hacer lo que necesita:

Label9.Text = sisRatio.ToString("#,##0.##"); 

Un pequeño problema con esto es que un viaje de solo un decimal si el segundo sería 0

1

Esto funcionará:

Label9.Text = sisRatio.ToString("#,0.00"); //changed from "#0,0.00" to "#,0.00" 
4

Probar:

Label9.Text = sisRatio.ToString("##,0.00"); 

estoy asumiendo que desea separar grupos por miles y no por cientos como en tu pregunta. Tenga en cuenta que esto utilizará el separador localizado para la cultura actual.

+0

@Jamie, hay algunas culturas que usan agrupaciones de 2 dígitos y algunas (como en el ejemplo OP) que usan 3 dígitos para el grupo que está más a la derecha y luego grupos de 2 dígitos después de eso. Esta información se puede obtener de 'CultureInfo.CurrentCulture.NumberFormat.NumberGroupSizes'. –

+0

@Frederik: gracias por señalarlo. Construí algunas aplicaciones locales y no me había encontrado con eso antes. Me pregunto si la agrupación de mi salario en grupos de 2 dígitos me haría sentir mejor acerca de la cantidad. –

4

El siguiente enfoque debe darle lo que busca ,:

double d = 123456789.1; 
string format = d.ToString().IndexOf(NumberFormatInfo.CurrentInfo.NumberDecimalSeparator) >=0 ? "#,##0.00" : "#,##0"; 
Console.WriteLine (d.ToString(format)); 

Esto también funciona para las culturas que no tienen grupos de 3 dígitos.

2

Parece que hay dos maneras de responder a esta pregunta:

  1. Una respuesta algorítmica que da el número en el formato especificado es decir, 2 dígitos entre las comas.

  2. Entendemos que se trata de una solución relativa a la configuración regional, ya que no puedo obtener ninguna de las sugerencias de ToString() para trabajar en mi PC.

Esta pregunta me sorprendió inicialmente ya que no es tan fácil como parece.

-1

Trate Esta

Private Sub frmMain_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
      Thread.CurrentThread.CurrentCulture = New CultureInfo("hi-IN") 
    End Sub 

y .....

Private Sub txtData_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtData.Leave 
     If IsNumeric(txtData.Text) Then 
      Dim xData As Integer = txtData.Text 
      txtData.Text = xData.ToString("##,0.00") 
     End If 
    End Sub 
Cuestiones relacionadas