none
convertir numeros a letras en visual.net

    Pregunta

  • hola alguien que me ayude a convertir números a letras en visual.net

    Tengo dos label uno automáticamente me sale el monto total: S./11,713.50 ya que cuando aparezca también en el otro label me salga en letras

    en otro label automáticamente quiero que salga en letras ONCE MIL SETECIENTOS TRECE CON 50/100 NUEVOS SOLES espero me puedan ayudar.


    dantexito

    viernes, 23 de septiembre de 2016 3:43

Respuestas

  • Hola DANI27,

    Ese monto que muestras en el label tiene el símbolo incorrecto : (El punto)

    NO : S./11,713.50
    SI : S/. 11,713.50

    ¿Cómo generas ese formato ? Ya que usas los "Nuevos Soles" (correspondiente a Perú) puedes asignarle el formato de la Cultura.

     Dim monto As Decimal = 11713D
    
     TextBox2.Text = monto.ToString("c", CultureInfo.CreateSpecificCulture("es-PE"))
     'Resultado : S/. 11,713.00

    Teniendo el formato correcto, puedes traducirlo a texto parseando a través de la Cultura con la que se creo.

    Algo como :

      Private Sub btnConvertir_Click(sender As Object, e As EventArgs) Handles btnConvertir.Click
    
            Dim nfi As NumberFormatInfo = New CultureInfo("es-PE", False).NumberFormat
            Dim valor As Decimal
    
            If Decimal.TryParse(lblMonto.Text, NumberStyles.Currency, nfi, valor) Then
    
                Dim partes As String() = valor.ToString.Split(nfi.CurrencyGroupSeparator)
    
                TextBox1.Text = String.Format("{0}con {1}/100 nuevos soles",
                                              Letras(partes(0)),
                                              partes(1)).ToUpper
            End If
    
        End Sub


    Y la función que encontré en un artículo : (el único que me funcionó)

    Convertir Número a Letras en VB.Net

    Public Function Letras(ByVal numero As String) As String
            '********Declara variables de tipo cadena************
            Dim palabras, entero, dec, flag As String
    
            '********Declara variables de tipo entero***********
            Dim num, x, y As Integer
    .......

    Resultado :

    Si ya estableciste la Cultura "es-PE" en tu aplicación solo harías uso del CultureInfo.CurrentCulture.

    CultureInfo

    CultureInfo.NumberFormat

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    viernes, 23 de septiembre de 2016 5:33
  • DANI27,

    Basta con buscar en la web o en los foros acerca del caso que presentas y obtendrás varios resultados, quizá debas realizar algunos ajustes según la moneda de tu país o la configuración regional pero servirá de base para afrontar el caso que presentas, es más, fíjate a la izquierda (debajo de la información de usuario) y encontrarás conversaciones relacionadas. Te dejo algunos enlaces para su revisión:

    CONVERTIR NUMEROS A LETRAS EN VB 2005

    COMO CONVERTIR NÚMEROS A LETRAS


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    viernes, 23 de septiembre de 2016 4:48

Todas las respuestas

  • DANI27,

    Basta con buscar en la web o en los foros acerca del caso que presentas y obtendrás varios resultados, quizá debas realizar algunos ajustes según la moneda de tu país o la configuración regional pero servirá de base para afrontar el caso que presentas, es más, fíjate a la izquierda (debajo de la información de usuario) y encontrarás conversaciones relacionadas. Te dejo algunos enlaces para su revisión:

    CONVERTIR NUMEROS A LETRAS EN VB 2005

    COMO CONVERTIR NÚMEROS A LETRAS


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    viernes, 23 de septiembre de 2016 4:48
  • Hola DANI27,

    Ese monto que muestras en el label tiene el símbolo incorrecto : (El punto)

    NO : S./11,713.50
    SI : S/. 11,713.50

    ¿Cómo generas ese formato ? Ya que usas los "Nuevos Soles" (correspondiente a Perú) puedes asignarle el formato de la Cultura.

     Dim monto As Decimal = 11713D
    
     TextBox2.Text = monto.ToString("c", CultureInfo.CreateSpecificCulture("es-PE"))
     'Resultado : S/. 11,713.00

    Teniendo el formato correcto, puedes traducirlo a texto parseando a través de la Cultura con la que se creo.

    Algo como :

      Private Sub btnConvertir_Click(sender As Object, e As EventArgs) Handles btnConvertir.Click
    
            Dim nfi As NumberFormatInfo = New CultureInfo("es-PE", False).NumberFormat
            Dim valor As Decimal
    
            If Decimal.TryParse(lblMonto.Text, NumberStyles.Currency, nfi, valor) Then
    
                Dim partes As String() = valor.ToString.Split(nfi.CurrencyGroupSeparator)
    
                TextBox1.Text = String.Format("{0}con {1}/100 nuevos soles",
                                              Letras(partes(0)),
                                              partes(1)).ToUpper
            End If
    
        End Sub


    Y la función que encontré en un artículo : (el único que me funcionó)

    Convertir Número a Letras en VB.Net

    Public Function Letras(ByVal numero As String) As String
            '********Declara variables de tipo cadena************
            Dim palabras, entero, dec, flag As String
    
            '********Declara variables de tipo entero***********
            Dim num, x, y As Integer
    .......

    Resultado :

    Si ya estableciste la Cultura "es-PE" en tu aplicación solo harías uso del CultureInfo.CurrentCulture.

    CultureInfo

    CultureInfo.NumberFormat

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    viernes, 23 de septiembre de 2016 5:33