none
Como puedo convertir un numero entero a decimal???...

    Pregunta

  • Hola, mi inconveniente es que tengo un valor entero ="5" en un textbox y necesito cambiarlo a numero decimal para que quede asi: 

    numero.text="5.00"

    si tuviera "9" entonces  a "9.00" con ese formato del punto no la coma, pero asi mismo que no pierda su valor si es que ya es decimal.

    Encontre un codigo pero no me sirvio me daba entero por ejemplo un .text="5.68" me dejaba en "5" o lo hacia string "568".

    otro codigo le daba un formato al textbox pero si tenia "6.23" le daba el formato "6.00".....como puedo hacer??...

    Necesito alguna funcion o algun codigo especial para transformar entero a decimal???....

    lunes, 04 de julio de 2011 17:01

Respuestas

  • Exelente solucion funciona muy bien....ya entendi el problema era la configuracion de cada region que puede cambiar..... asi ke mejor combine la funcion k me sugirio Leandro en su respuesta y tambien replace ke escribio Antonio con ese codigo me quedo perfecto....

    quedo algo asi:

    valor.text="5,68"

     Dim cantidad As Double = valor.Text

            Format(cantidad, "##0.00")

            resultado.Text = cantidad.ToString("##0.00").Replace(",", ".")

    y para no tener que cambiar la configuracion regional hago esto en el evento keypress:

     If e.KeyChar.ToString() = "." Then

                e.KeyChar = ","

            End If

    con esto ya no me da error en la conversion porque no me aceptaba el punto......

    oo si tengo valor.text="5" lo convierte a "5.00"

    y listo problema solucionado....

    Gracias k bueno tener la ayuda de ustds y ke esten ahi para sacarnos de apuros....

     

    • Marcado como respuesta Joseph_jv martes, 05 de julio de 2011 14:57
    martes, 05 de julio de 2011 14:55

Todas las respuestas

  • hola

    pero lo que necesitas es quitar la parte decimal

    TextBox1.Text = "5.68"

    Dim val As Double = Convert.ToDouble(TextBox1.Text)

    txtResultad.Text = Convert.ToDouble(val.ToString("N0")).ToString("N2")

     

    como veras al usar N0 indicas que quite todos los decimales

     

    sino funciona por un tema de cultura podrias usar

    TextBox1.Text = "5.68"

    Dim val As Double = Convert.ToDouble(TextBox1.Text, CultureInfo.CreateSpecificCulture("en-US"))

    txtResultad.Text = Convert.ToDecimal(val.ToString("N0")).ToString("N2")

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    lunes, 04 de julio de 2011 17:29
  • Buenas Joseph.

    Pero si no entiendo mal lo que quieres es que permanezca los decimales pero con el punto, en vez de la coma.

    Como bien comenta nuestro compañero Leandro es un tema del Culture, por la configuración regional.

    Si el valor que quieres mostrar se muestra digamos "5,68" podrias hacer algo como esto:

     

    Dim vDecimal As Double = 5,68
    TextBox1.Text = vDecimal.ToString().Replace(",",".")
    
    

     

    Reemplaza las comas que encuentre por un punto.

    Con esto se muestra lo que quieres en el TextBox, pero si luego necesitas trabajar con él deberás hacer el reemplazo inverso, siempre controlando que sea un valor válido.

    Quizás esto te sirva de ayuda si lo que quieres es trabajar con el TextBox:

    http://social.msdn.microsoft.com/Forums/es-ES/vbes/thread/0e32b574-b250-4151-8441-a830b7f05364

    Un saludo.


    Antonio López Atienza
    Microsoft Community Contributor
    .NET Developer
    Code examples
    http://www.lopezatienza.es
    lunes, 04 de julio de 2011 18:36
  • Exelente solucion funciona muy bien....ya entendi el problema era la configuracion de cada region que puede cambiar..... asi ke mejor combine la funcion k me sugirio Leandro en su respuesta y tambien replace ke escribio Antonio con ese codigo me quedo perfecto....

    quedo algo asi:

    valor.text="5,68"

     Dim cantidad As Double = valor.Text

            Format(cantidad, "##0.00")

            resultado.Text = cantidad.ToString("##0.00").Replace(",", ".")

    y para no tener que cambiar la configuracion regional hago esto en el evento keypress:

     If e.KeyChar.ToString() = "." Then

                e.KeyChar = ","

            End If

    con esto ya no me da error en la conversion porque no me aceptaba el punto......

    oo si tengo valor.text="5" lo convierte a "5.00"

    y listo problema solucionado....

    Gracias k bueno tener la ayuda de ustds y ke esten ahi para sacarnos de apuros....

     

    • Marcado como respuesta Joseph_jv martes, 05 de julio de 2011 14:57
    martes, 05 de julio de 2011 14:55
  • pero no necesitas el Replace si puede trabjar con al cultura

    valor.text="5,68"

    Dim val As Double = Convert.ToDouble(valor.text, CultureInfo.CreateSpecificCulture("es-ES"))

    txtResultad.Text = Convert.ToDecimal(val.ToString("N0")).ToString("N2")

     

    la cultura es quien define el signo de puntualcion no el Replace que tu haces, si quieres que use siempre el punto define la cultura cuando inicia la aplicacion

    System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");

    ubica esa linea en el load del primer form

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    martes, 05 de julio de 2011 15:06