none
Calculo esta arredondando os valores, sem eu querer RRS feed

  • Pergunta

  • Estou fazendo um programa que calcula horas noturnas no c#.. quando eu faço um calculo ele está arredondando o valor..

    double SaidaSegSex = 0; double EntradaSegSex = 0; if (S1.Value.Hour == 0 && E1.Value.Hour != 0) { SaidaSegSex = 24; } else { SaidaSegSex = S1.Value.Hour; } if (E1.Value.Hour == 0 && S1.Value.Hour != 0) { EntradaSegSex = 24; } else { EntradaSegSex = E1.Value.Hour; } double SegSexEMIN = E1.Value.Minute; double SegSexIMIN = I1.Value.Minute; double SegSexSMIN = S1.Value.Minute; double SegSexE = EntradaSegSex + SegSexEMIN / 60; double SegSexI = I1.Value.Hour + SegSexIMIN / 60; double SegSexS = SaidaSegSex + SegSexSMIN / 60; double SegSexT = SegSexS - SegSexE; double SegSexSomaCalculo = 0; if (checkBox3.Checked == false) { double SegSexCALCULO = 0; if (SegSexT > 0 && SegSexT < 8) { if (SegSexS > 22) { SegSexCALCULO = (SegSexT - (SegSexS - 22) + (SegSexS - 22) * (8 / 7)) - SegSexI; } else { SegSexCALCULO = 0; } } else if (SegSexT >= 8) { if (SegSexS > 22) { SegSexCALCULO = (SegSexT - (SegSexS - 22) + (SegSexS - 22) * (8 / 7)) - SegSexI; } else if (SegSexS <= 22) { SegSexCALCULO = SegSexT - SegSexI; } else { SegSexCALCULO = 0; } } else if (SegSexT >= -17 && SegSexT < 0) { if (SegSexE >= 22 && SegSexS >= 5) { SegSexCALCULO = ((32 / 7) + (SegSexS - 4) + (25 - SegSexE) * (8 / 7)) - SegSexI; } else if (SegSexE < 22 && SegSexS > 5) { SegSexCALCULO = (8 + (SegSexS - 4) + (22 - SegSexE)) - SegSexI; } else if (SegSexE < 22 && SegSexS <= 5) { SegSexCALCULO = ((22 - SegSexE) + SegSexS * (8 / 7) + (16 / 7)) - SegSexI; } else { SegSexCALCULO = 0; } } else { SegSexCALCULO = 0; } if (SegSexCALCULO > 8) { SegSexSomaCalculo = SegSexCALCULO - 8; ;//total de HE } else { SegSexSomaCalculo = 0; } } else { SegSexSomaCalculo = 0; }

    label1.Text = Math.Round(SegSexSomaCalculo,2).ToString();

    S1 é o dateTimePicker de horas da saída, I1 do intervalo e E1 da entrada.. ai ficaria: S1 - E1 -I1

    por exemplo: quando a entrada for 14h e a saida for 1h (sem intervalo).. iria cair nessa parte if (SegSexT >= -17 && SegSexT < 0), e o resultado correto seria 11,42 e o que aparece é 11 apenas.


    sábado, 31 de dezembro de 2016 22:03

Respostas

  • RESOLVIDO>  
    double SegSexCALCULO=((22-SegSexE)+SegSexS*((double)8/(double)7)+((double)16/(double)7))-SegSexI;
    Colocando o double.
    • Marcado como Resposta AlexanddreCalil domingo, 1 de janeiro de 2017 13:09
    domingo, 1 de janeiro de 2017 13:09

Todas as Respostas

  • Um jeito mais facil de ver meu problema, quando isso é executado:

    double SegSexCALCULO=((22-SegSexE)+SegSexS*(8/7)+(16/7))-SegSexI;

    //double SegSexE =14

    //double SegSexS = 1

    //double SegSexI =0

    label1.Text =Math.Round(SegSexCALCULO,2).ToString();

    O resultado correto é 11,42.

    O resultado que aparece é: 11.





    sábado, 31 de dezembro de 2016 22:11
  • RESOLVIDO>  
    double SegSexCALCULO=((22-SegSexE)+SegSexS*((double)8/(double)7)+((double)16/(double)7))-SegSexI;
    Colocando o double.
    • Marcado como Resposta AlexanddreCalil domingo, 1 de janeiro de 2017 13:09
    domingo, 1 de janeiro de 2017 13:09