none
Cálculo de salário líquido RRS feed

  • Pergunta

  •  Olá pessoal boa noite, estou desenvolvendo um programa no c# onde preciso calcular o salário líquido de um funcionario, se baseando no valor de seu salário bruto e tendo desconto de 6% do VT e R$ 50 de convenio, porém o resultado está dando diferente do esperado.

    Onde está o erro?

    Obrigado!

    {
                Console.WriteLine("Digite o valor do salário bruto: ");
                double sbruto = double.Parse(Console.ReadLine());

                double vt = sbruto - ((6 / 100) * sbruto);
                int convenio = 50;

                double salarioliquido = sbruto - vt - convenio;

                Console.WriteLine(salarioliquido);

                Console.ReadKey();
            }

    quinta-feira, 24 de setembro de 2020 01:51

Respostas

  • Tente assim:

    {
                Console.WriteLine("Digite o valor do salário bruto: ");
                double sbruto = double.Parse(Console.ReadLine());

                double vt = (sbruto * 6) / 100; // ou // double vt = sbruto * 0.94
                int convenio = 50;

                double salarioliquido = sbruto - vt - convenio;

                Console.WriteLine(salarioliquido);

                Console.ReadKey();
            }


    MARIANO1776

    quinta-feira, 24 de setembro de 2020 08:37

Todas as Respostas

  • Tente assim:

    {
                Console.WriteLine("Digite o valor do salário bruto: ");
                double sbruto = double.Parse(Console.ReadLine());

                double vt = (sbruto * 6) / 100; // ou // double vt = sbruto * 0.94
                int convenio = 50;

                double salarioliquido = sbruto - vt - convenio;

                Console.WriteLine(salarioliquido);

                Console.ReadKey();
            }


    MARIANO1776

    quinta-feira, 24 de setembro de 2020 08:37
  • Obrigado amigo, deu certo!

    Acho que o erro estava na parte da porcentagem mesmo...

    Obrigado!

    quinta-feira, 24 de setembro de 2020 12:36
  • Também se você fizer assim:

    {
        Console.WriteLine("Digite o valor do salário bruto: ");
        double sbruto = double.Parse(Console.ReadLine());
    
        //note que declarei 6 como 6.00, visto que 6 é um int
        //e 6.00 é interpretado como double já
        double vt = sbruto - ((6.00 / 100.00) * sbruto);
        double convenio = 50;
    
        double salarioliquido = sbruto - vt - convenio;
    
        Console.WriteLine(salarioliquido);
        Console.ReadKey();
    }

    O que dava errado no seu código era a sequência ((6 / 100) * sbruto) pois (6 / 100) executava primeiro e era uma divisão de int por int, então 6 (int) dividido por 100 (int) dá zero, porque é um valor inteiro, e zero que multiplicava sbruto (double).

    Ao declarar 6 como 6.00 o sistema já entende que 6.00 é double e (assim como o 100.00) e não depende do cast automático de int para double, deixando toda operação executar na estrutura correta (double), que permite valores fracionados.

    • Sugerido como Resposta SammuelMiranda quarta-feira, 7 de outubro de 2020 13:28
    quarta-feira, 7 de outubro de 2020 13:28