none
Mostrar decimales en formato de cultura especifico RRS feed

  • Pregunta

  • Hola, trabajo en VB.NET en un proyecto ASP.NET WebForms y de momento debo presentar los datos de una tabla MySQL en un listBox, todos los campos de la tabla son de tipo Decimal(10,2).

    puedo presentar los datos utilizando este codigo

    If dr.HasRows Then
    
                While dr.Read()
                              ListBox1.Items.Add(Convert.ToString(dr.Item("valor")))
                    ListBox1.Items.Add(Convert.ToString(dr.Item("suma")))
                    ListBox1.Items.Add(Convert.ToString(dr.Item("resta")))
                    ListBox1.Items.Add(Convert.ToString(dr.Item("multi")))
                    ListBox1.Items.Add(Convert.ToString(dr.Item("division")))
                End While
            End If

    Como veran paso los valores de Double a string para luego ingresarlos al listBox, hago esto pues quisiera aplicar un formato a los valores decimales que recibo, especificamente si en la tabla tengo un campo con valor 10236.25 quisiera presentarlo de la forma $10,236.25...para lo grar lo anterior importe el espacio de nombre Imports System.Globalization y probe con el siguiente codigo...solo probe con el primer dato

    While dr.Read()
      Dim valor As String = Convert.ToString(dr.Item("valor"))   <-- recupero el dato
      Dim Culture As CultureInfo                
      Dim specifier As String = "C"
                    Culture = CultureInfo.CreateSpecificCulture("en-US")
                    Dim resultado As String = valor.ToString(specifier, Culture)
                    ListBox1.Items.Add(dr.Item("valor"))
                    ListBox1.Items.Add(Convert.ToString(dr.Item("valor")))
                    ListBox1.Items.Add(Convert.ToString(dr.Item("suma")))
                    ListBox1.Items.Add(Convert.ToString(dr.Item("resta")))
                    ListBox1.Items.Add(Convert.ToString(dr.Item("multi")))
                    ListBox1.Items.Add(Convert.ToString(dr.Item("division")))
                End While

    pero me aparece el siguiente error

    y si utilizo N2 para hacerlo mas sencillo

    Dim resultado As String = valor.ToString("N2")

    me aparece el error

    como puedo lograr el mostrar un valor decimal 12365.25 en la forma $12,365025 ?


    pabletoreto

    lunes, 9 de noviembre de 2015 20:03

Respuestas

  • El problema es que estás intentando aplicar las conversiones sobre la variable "valor", que ya es de tipo string, y por lo tanto no admite formato o decimales. Para eso, tienes que leer los datos a una variable de tipo Decimal, y después en el momento de convertir ese Decimal a String es cuando sí que le puedes indicar el formato de conversión:

    Dim valor as Decimal = Convert.ToDecimal(dr.Item("valor"))

    y luego ya le puedes aplicar cualquiera de los dos mecanismos que intentaste:

    Dim resultado as String = valor.ToString("N2")

    o bien:

    Dim resultado as String = valor.ToString("c", Culture)

    • Propuesto como respuesta Sergio Parra miércoles, 11 de noviembre de 2015 8:16
    • Marcado como respuesta pabletoreto miércoles, 11 de noviembre de 2015 17:57
    miércoles, 11 de noviembre de 2015 7:45