none
Duda de principiante, no logro capturar un numero decimal y que se guarde como tal. C# RRS feed

  • Pregunta

  • Quiero que al insertar un numero decimal, mi variable promedio lo guarde como tal en mi variable "promedio".

    Creo que el compilador confunde de alguna forma el float con un int.

    Cuando intento poner por ejemplo un numero como el 8.6 se guarda como 86.

    Gracias de antemano.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace Promedio
    {
        class Program
        {
            static void Main(string[] args)
            {
                float i;
                float promedio = 0;
                float end=0;
                char letra;


                Console.WriteLine("Introduzca la calificacion");
                promedio = Convert.ToSingle(Console.ReadLine()) + promedio;

                

                for (i = 0; end < 2; i++)
                {
                    Console.WriteLine("Desea introducir otra calificacion?(s/n)"+promedio);
                    letra = Convert.ToChar(Console.ReadLine());

                    switch (letra)
                    {
                        case 's':
                            {
                                Console.WriteLine("Introduzca la calificacion");
                                promedio = promedio + Convert.ToSingle(Console.ReadLine());

                                

                                break;

                            }
                        case 'n':
                            {
                                end = Convert.ToSingle(2);
                                break;

                            }

                        


                    }

                }

                promedio = promedio / i;
                Console.WriteLine("Promedio de las calificaciones: " + promedio);
                Console.ReadKey();





            }
        }
    }


    • Editado Plastter viernes, 28 de septiembre de 2018 21:38
    viernes, 28 de septiembre de 2018 21:14

Respuestas

  • Buenas,

    Ese problema se da por la configuración regional para decimales y miles, en tu PC, deduzco que el separador decimal es "," , prueba y veras que entonces si te funciona.

    Lo que puedes hacer, es obtener el separador de decimales del sistema, y hacer un .Replace para que considere tanto "," como "." como separador decimal:

    //Obtengo el separador de decimales
    string decimales = Thread.CurrentThread.CurrentUICulture.NumberFormat.CurrencyDecimalSeparator;
    //En base al separador de decimales, obtengo el de miles
    string miles = decimales == "," ? "." : ",";
    
    //Aplica el replace
    promedio = Convert.ToSingle(Console.ReadLine().Replace(miles,decimales)) + promedio;

    Prueba y nos comentas

    Atte


    Jorge Turrado Ferrero

    Mis repositorios en GitHub
    Ranking GitHub Euskadi
    Ranking GitHub Alava

    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    • Marcado como respuesta Plastter viernes, 28 de septiembre de 2018 22:47
    viernes, 28 de septiembre de 2018 22:03

Todas las respuestas

  • Buenas,

    Ese problema se da por la configuración regional para decimales y miles, en tu PC, deduzco que el separador decimal es "," , prueba y veras que entonces si te funciona.

    Lo que puedes hacer, es obtener el separador de decimales del sistema, y hacer un .Replace para que considere tanto "," como "." como separador decimal:

    //Obtengo el separador de decimales
    string decimales = Thread.CurrentThread.CurrentUICulture.NumberFormat.CurrencyDecimalSeparator;
    //En base al separador de decimales, obtengo el de miles
    string miles = decimales == "," ? "." : ",";
    
    //Aplica el replace
    promedio = Convert.ToSingle(Console.ReadLine().Replace(miles,decimales)) + promedio;

    Prueba y nos comentas

    Atte


    Jorge Turrado Ferrero

    Mis repositorios en GitHub
    Ranking GitHub Euskadi
    Ranking GitHub Alava

    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    • Marcado como respuesta Plastter viernes, 28 de septiembre de 2018 22:47
    viernes, 28 de septiembre de 2018 22:03
  • Haha que cosas, si esto era el problema, muchas gracias tenga buen dia.
    viernes, 28 de septiembre de 2018 22:48