none
Resta de decimales RRS feed

  • Pregunta

  • hola a todos, bueno tengo un problema que me surgio al comprobar datos de una resta de decimales en c#,

    pues la resta que ejecuta el programa es erroneo por ejemplo:

    4152.62-292.3=3874.24  pues la respuesta erronea  porque deberia de ser 3860.32 

    ya parametrice los decimales con Math.Round();

    y nada sige Votandome lo mismo, ayuda por favor que debo de hacer ....


    • Editado luis1128 martes, 2 de julio de 2019 5:26
    martes, 2 de julio de 2019 5:25

Todas las respuestas

  • hola

    deberias castear el tipo de dato, usando algo como esto

    decimal result = (decimal)4152.62 - (decimal)292.3;


    o esto

    decimal result = 4152.62m - 292.3m;

    al indicar el tipo de dato aplicar la operacion correctamente

    aunque tambien intente con esto

    double result = 4152.62 - 292.3;

    y resuelve correctamente

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    martes, 2 de julio de 2019 5:33
  • 4152.62-292.3=3874.24  pues la respuesta erronea  porque deberia de ser 3860.32 
    Lo acabo de probar con

    decimal d1 = 4152.62m;
    decimal d2 = 292.3m;
    decimal resultado = d1-d2;
    

    y sale el resultado correcto.

    Sospecho que debe haber algo más en tu código. Seguramente no tienes solamente los números escritos directamente sino que haces algún tipo de conversión desde texto. La sospecha es que debe haber algún error en ese proceso de conversión, tal como la clásica confusión de coma decimal contra punto decimal o alguna otra cosa similar.

    martes, 2 de julio de 2019 6:03
    Moderador
  • este es mi cdigo y con lo que me dijiste pues hize y nada me bota error aun--

    class frances
        {
            private double Pres;
            private double Inte;
            private double Perio;
            //Constructores
            public frances()
            {
                this.Pres = 0;
                this.Inte = 1;
                this.Perio = 2;
            }
            public frances(double pres, double inte, double perio)
            {
                Pres = pres;
                Inte = inte;
                Perio = perio;
            }
            //Propiedades
            public double Presta
            {
                get { return Pres; }
                set { Pres = value; }
            }
            public double Periodo
            {
                get { return Perio; }
                set { Perio = value; }
            }
            public double Interes
            {
                get { return Inte; }
                set { Inte = value; }
            }
            //Metodos 
            public void LeerDatos()
            {
                Console.WriteLine("Ingrese Datos: ");
                Console.WriteLine("Valor Inicial: ");
                Pres = double.Parse(Console.ReadLine());
                Console.WriteLine("Interes: ");
                Inte = double.Parse(Console.ReadLine());
                Console.WriteLine("Periodos en Meses: ");
                Perio = double.Parse(Console.ReadLine());
            }
            public void SystemFrances()
            {
                LeerDatos();
                double Saldo = Pres;
                double Mensualidad = (Pres * (Inte / 100) / (1 - (Math.Pow(1 + Inte / 100, Periodo * -1))));
                double Interes = Pres * Inte/100;
                double Amortizacion = Mensualidad - Interes;
                Console.WriteLine("Pago Mensual: "+Mensualidad);
                //Mostrar
                Console.WriteLine();
                Console.WriteLine("------------------------------TABLA AMORTIZACION FRENCH---------------------------------");
                Console.WriteLine("*****************************************************************************************");
                Console.WriteLine("Periodos" + "   " + "Mensualidad" + "   " + "Interes" + "   " + "Amortizacion" + "     " + "Saldo");
                //Calcular Valores
                for (int k = 0; k < Periodo + 1; k++)
                {
                    if (k == Periodo)
                    {
                        Saldo = 0;
                    }
                    Console.WriteLine();
                    Console.WriteLine(k.ToString().PadRight(12) + Math.Round(Mensualidad).ToString().PadRight(13) + Math.Round(Interes,2).ToString().PadRight(12) + Math.Round(Amortizacion,2).ToString().PadRight(15) + Math.Round(Saldo,2).ToString().PadRight(12));
                    Interes = Saldo * Inte/100;
                    Saldo = Math.Round(Saldo,2) - Math.Round(Amortizacion,2);
                    Amortizacion = Math.Round(Mensualidad,2) - Math.Round(Interes,2);
                }
            }
        }

    domingo, 7 de julio de 2019 1:18
  • este es mi codigo y me sigue votando error---

    class frances
        {
            private double Pres;
            private double Inte;
            private double Perio;
            //Constructores
            public frances()
            {
                this.Pres = 0;
                this.Inte = 1;
                this.Perio = 2;
            }
            public frances(double pres, double inte, double perio)
            {
                Pres = pres;
                Inte = inte;
                Perio = perio;
            }
            //Propiedades
            public double Presta
            {
                get { return Pres; }
                set { Pres = value; }
            }
            public double Periodo
            {
                get { return Perio; }
                set { Perio = value; }
            }
            public double Interes
            {
                get { return Inte; }
                set { Inte = value; }
            }
            //Metodos 
            public void LeerDatos()
            {
                Console.WriteLine("Ingrese Datos: ");
                Console.WriteLine("Valor Inicial: ");
                Pres = double.Parse(Console.ReadLine());
                Console.WriteLine("Interes: ");
                Inte = double.Parse(Console.ReadLine());
                Console.WriteLine("Periodos en Meses: ");
                Perio = double.Parse(Console.ReadLine());
            }
            public void SystemFrances()
            {
                LeerDatos();
                double Saldo = Pres;
                double Mensualidad = (Pres * (Inte / 100) / (1 - (Math.Pow(1 + Inte / 100, Periodo * -1))));
                double Interes = Pres * Inte/100;
                double Amortizacion = Mensualidad - Interes;
                Console.WriteLine("Pago Mensual: "+Mensualidad);
                //Mostrar
                Console.WriteLine();
                Console.WriteLine("------------------------------TABLA AMORTIZACION FRENCH---------------------------------");
                Console.WriteLine("*****************************************************************************************");
                Console.WriteLine("Periodos" + "   " + "Mensualidad" + "   " + "Interes" + "   " + "Amortizacion" + "     " + "Saldo");
                //Calcular Valores
                for (int k = 0; k < Periodo + 1; k++)
                {
                    if (k == Periodo)
                    {
                        Saldo = 0;
                    }
                    Console.WriteLine();
                    Console.WriteLine(k.ToString().PadRight(12) + Math.Round(Mensualidad).ToString().PadRight(13) + Math.Round(Interes,2).ToString().PadRight(12) + Math.Round(Amortizacion,2).ToString().PadRight(15) + Math.Round(Saldo,2).ToString().PadRight(12));
                    Interes = Saldo * Inte/100;
                    Saldo = Math.Round(Saldo,2) - Math.Round(Amortizacion,2);
                    Amortizacion = Math.Round(Mensualidad,2) - Math.Round(Interes,2);
                }
            }
        }


    domingo, 7 de julio de 2019 1:19