none
¿Como estructuro la cadena de formato para que formatee un número y que se visualice como una cadena con signo %?

    Pregunta

  • Suponiendo que tengo:

    nNumero = 5

    Que también puede ser: 05

    o también: 005

    Quiero obtener:

    cNumero = format (nNumero, "FORMATO")

    Para que cNumero contenga: 5 % (en cualquiera de los tres casos anteriores)

    ¿Cómo sería la cadena FORMATO?



    • Editado James-2016 domingo, 9 de octubre de 2016 1:15
    domingo, 9 de octubre de 2016 1:13

Respuestas

  • Hola James-2016,

    Dim nNumero As Integer = 5
    
    Dim valor As String = String.Format("{0:0%}", nNumero / 100) 'Resultado 5%

    Cadenas con formato numérico estándar o usar el formato "P"

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI


    domingo, 9 de octubre de 2016 1:40
  • Está bien, es lo que quiero, solo que un detalle, cuando pongo 0 solo lo formatea como %, me gustaría que se vea como 0% (o mejor aún todos que se vean con un espacio de separación, o sea: N %)

    Para este caso, -como te mencioné en un post anterior- puedes obtener una representación de cadena con formato de un valor numérico:

    cTexto1 = (CInt(nNumero) / 100).ToString("0 %")

    Nota que utilizo la función CInt porque entiendo que la variable 'nNumero' es de tipo String dado el ejemplo que proporcionas: '005', '05', en un valor numérico no tiene representatividad el cero a la izquierda. Si la variable es de tipo numérico omite la función CInt.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta James-2016 domingo, 9 de octubre de 2016 2:09
    domingo, 9 de octubre de 2016 1:41
  • Hola James-2016,

    Creo que más fácil es usar el "P0".

    Dim nNumero As Integer = CInt("005")
    
    Dim valor As String = (nNumero / 100).ToString("P0")
    'Resultado : 5 %

    Formato porcentual con 0 decimales.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta James-2016 domingo, 9 de octubre de 2016 2:09
    domingo, 9 de octubre de 2016 1:55

  • Aprovecho para preguntarte una cosa más solo para no quedarme con la duda:

    En esta línea:

    cTexto = FormatPercent(nNumero / 100, 0, TriState.False)

    ¿Qué hace exactamente TriState.False?

    Muchas gracias por todo.

    El parámetro se llama 'IncludeLeadingDigit' y espera por una constante de tres valores: False, True o UserDefault. Si colocas la constante False no obtendrás un cero a la izquierda en los valores fraccionarios (.56), en caso la constante sea True obtendrás un cero a la izquierda (0.56), y la tercera constante se rige según la configuración predeterminada.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta James-2016 domingo, 9 de octubre de 2016 2:10
    domingo, 9 de octubre de 2016 2:04

Todas las respuestas

  • James-2016,

    Podrías utilizar la función especializada FormatPercent()

    cTexto = FormatPercent(nNumero / 100, 0, TriState.False)


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    domingo, 9 de octubre de 2016 1:24
  • Está bien, es lo que quiero, solo que un detalle, cuando pongo 0 solo lo formatea como %, me gustaría que se vea como 0% (o mejor aún todos que se vean con un espacio de separación, o sea: N %)
    domingo, 9 de octubre de 2016 1:33
  • Hola James-2016,

    Dim nNumero As Integer = 5
    
    Dim valor As String = String.Format("{0:0%}", nNumero / 100) 'Resultado 5%

    Cadenas con formato numérico estándar o usar el formato "P"

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI


    domingo, 9 de octubre de 2016 1:40
  • Está bien, es lo que quiero, solo que un detalle, cuando pongo 0 solo lo formatea como %, me gustaría que se vea como 0% (o mejor aún todos que se vean con un espacio de separación, o sea: N %)

    Para este caso, -como te mencioné en un post anterior- puedes obtener una representación de cadena con formato de un valor numérico:

    cTexto1 = (CInt(nNumero) / 100).ToString("0 %")

    Nota que utilizo la función CInt porque entiendo que la variable 'nNumero' es de tipo String dado el ejemplo que proporcionas: '005', '05', en un valor numérico no tiene representatividad el cero a la izquierda. Si la variable es de tipo numérico omite la función CInt.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta James-2016 domingo, 9 de octubre de 2016 2:09
    domingo, 9 de octubre de 2016 1:41
  • mm acabo de aprender otra cosita: se le puede pasar el formato al ToString (¡qué potente!), ahora sí lo formatea tal como deseaba.

    Tienes razón en el detalle del ejemplo, dije mal, es como dices, no se trata de una variable tipo entera sino de una cadena que contiene un número, por eso la posibilidad que tenga los ceros a la izquierda.

    Aprovecho para preguntarte una cosa más solo para no quedarme con la duda:

    En esta línea:

    cTexto = FormatPercent(nNumero / 100, 0, TriState.False)

    ¿Qué hace exactamente TriState.False?

    Muchas gracias por todo.

    domingo, 9 de octubre de 2016 1:55
  • Hola James-2016,

    Creo que más fácil es usar el "P0".

    Dim nNumero As Integer = CInt("005")
    
    Dim valor As String = (nNumero / 100).ToString("P0")
    'Resultado : 5 %

    Formato porcentual con 0 decimales.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta James-2016 domingo, 9 de octubre de 2016 2:09
    domingo, 9 de octubre de 2016 1:55

  • Aprovecho para preguntarte una cosa más solo para no quedarme con la duda:

    En esta línea:

    cTexto = FormatPercent(nNumero / 100, 0, TriState.False)

    ¿Qué hace exactamente TriState.False?

    Muchas gracias por todo.

    El parámetro se llama 'IncludeLeadingDigit' y espera por una constante de tres valores: False, True o UserDefault. Si colocas la constante False no obtendrás un cero a la izquierda en los valores fraccionarios (.56), en caso la constante sea True obtendrás un cero a la izquierda (0.56), y la tercera constante se rige según la configuración predeterminada.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta James-2016 domingo, 9 de octubre de 2016 2:10
    domingo, 9 de octubre de 2016 2:04
  • ...todos los caminos conducen a Roma jeje

    Gracias, esa es otra muy buena alternativa.

    domingo, 9 de octubre de 2016 2:09
  • ok, gracias.
    domingo, 9 de octubre de 2016 2:10