Usuário com melhor resposta
Calculo esta arredondando os valores, sem eu querer

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.
- Editado AlexanddreCalil sábado, 31 de dezembro de 2016 22:04
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
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.
- Editado AlexanddreCalil sábado, 31 de dezembro de 2016 22:14
- Marcado como Resposta AlexanddreCalil domingo, 1 de janeiro de 2017 13:07
- Não Marcado como Resposta AlexanddreCalil domingo, 1 de janeiro de 2017 13:07
-
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