none
Problema con decimales RRS feed

  • Pregunta

  • hola ire al grano , tengo este codigo

     

    private void button3_Click(object sender, EventArgs e)

    {

     

    float num1 = Single.Parse(textBox2.Text)/2;

     

    textBox3.Text = num1.ToString();

    }
    Todo va bien mientras ponga numeros enteros pero en el momento que pongo un numero con decimales me causa una excepcion ya intente de muchas maneras pero no logro que funciones,  le agradeceria mucho su ayuda

    saludos

    martes, 7 de julio de 2009 14:33

Respuestas

  • hola,

    si todo se debe a la configuracion.

    pruab agregar esta linea:

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

    como veras esta especifica que se usara la configuracion de puntuacion de estados unidos en donde el punto es el separador de decimales.

    Puede cambiar la configuracion de a cuerdo a donde te encuentres. CultureInfo

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta MiguSC miércoles, 8 de julio de 2009 1:24
    martes, 7 de julio de 2009 15:01
  • hola ire al grano , tengo este codigo

     

    private void button3_Click(object sender, EventArgs e)

     

    float num1 = Single.Parse(textBox2.Text)/2;

     

     

    textBox3.Text = num1.ToString();

    }
    Todo va bien mientras ponga numeros enteros pero en el momento que pongo un numero con decimales me causa una excepcion ya intente de muchas maneras pero no logro que funciones,  le agradeceria mucho su ayuda

    saludos

    {

     


    Hola,
    Me preguntaba cual es la funcionalidad, básicamente dado que si lo que se busca es trabajar con número decimales un Single, no es la mejor opción, considerando escenarios.

    Dinero o similares: decimal es la mejor opcion
    Coordenadas u operaciones matémáticas entonces: double es la mejor opción.

    Esto se debe a la precisión, un float tiene una precisión máxima de 7 dígitos, en cambio un double de entre 15 y 16. En cambio un decimal tiene una precisión de entre 28 y 29 dígitos significativos

    una vez determinado esto entonces hacer el Parse podría sugerir lo hicieras con el método TryParse

    ejemplo:

    decimal result = 0.00m;
    if(decimal.TryParse("1000", NumberStyles.Any, CultureInfo.CurrentCulture, out result)) return result;

    Saludos,
    Microsoft Certified Technology Specialist .NET 3.5 WPF Application Development
    Profesionista Microsoft VIP México
    Blog Técnico
    World Wide Finalist Imagine Cup 2007
    Microsoft Student Partner
    C#, WPF, WCF
    LinkedIn
    • Marcado como respuesta MiguSC miércoles, 8 de julio de 2009 1:24
    martes, 7 de julio de 2009 15:25

Todas las respuestas

  • hola,

    si todo se debe a la configuracion.

    pruab agregar esta linea:

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

    como veras esta especifica que se usara la configuracion de puntuacion de estados unidos en donde el punto es el separador de decimales.

    Puede cambiar la configuracion de a cuerdo a donde te encuentres. CultureInfo

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta MiguSC miércoles, 8 de julio de 2009 1:24
    martes, 7 de julio de 2009 15:01
  • hola ire al grano , tengo este codigo

     

    private void button3_Click(object sender, EventArgs e)

     

    float num1 = Single.Parse(textBox2.Text)/2;

     

     

    textBox3.Text = num1.ToString();

    }
    Todo va bien mientras ponga numeros enteros pero en el momento que pongo un numero con decimales me causa una excepcion ya intente de muchas maneras pero no logro que funciones,  le agradeceria mucho su ayuda

    saludos

    {

     


    Hola,
    Me preguntaba cual es la funcionalidad, básicamente dado que si lo que se busca es trabajar con número decimales un Single, no es la mejor opción, considerando escenarios.

    Dinero o similares: decimal es la mejor opcion
    Coordenadas u operaciones matémáticas entonces: double es la mejor opción.

    Esto se debe a la precisión, un float tiene una precisión máxima de 7 dígitos, en cambio un double de entre 15 y 16. En cambio un decimal tiene una precisión de entre 28 y 29 dígitos significativos

    una vez determinado esto entonces hacer el Parse podría sugerir lo hicieras con el método TryParse

    ejemplo:

    decimal result = 0.00m;
    if(decimal.TryParse("1000", NumberStyles.Any, CultureInfo.CurrentCulture, out result)) return result;

    Saludos,
    Microsoft Certified Technology Specialist .NET 3.5 WPF Application Development
    Profesionista Microsoft VIP México
    Blog Técnico
    World Wide Finalist Imagine Cup 2007
    Microsoft Student Partner
    C#, WPF, WCF
    LinkedIn
    • Marcado como respuesta MiguSC miércoles, 8 de julio de 2009 1:24
    martes, 7 de julio de 2009 15:25
  • hola gracias por las respuestas ya esta corriendo bien basicamente lo que queria era tomar un valor decimal de una caja de texto y despues redondearla saludos !
    miércoles, 8 de julio de 2009 1:25