Usuário com melhor resposta
Arredondar para cima

Pergunta
-
Boa noite, estou fazendo um programa de calculo para a faculdade, e estou com um problema, eu preciso arredondar um numero decimal para o múltiplo de 5 mais próximo para cima, por exemplo
1,61 para 1,65
1,66 para 1,7
Tentei usar o round e o ceiling, mas não é o que eu preciso, pois se arredondar muito, vai dar errado o programa.Desde já agradeço.
Respostas
-
Olá.
É meio que uma solução não muito bonita.
mas consegui aqui assim:
double VL_CORRIG_B = double.Parse("123.61"); double valoraux = Math.Round(VL_CORRIG_B, 1, MidpointRounding.AwayFromZero); if (((VL_CORRIG_B.ToString().Split('.').Length > 1) && VL_CORRIG_B.ToString().Split('.')[1].Length > 1) && int.Parse(VL_CORRIG_B.ToString().Split('.')[1].Substring(1,1)) > 0 && int.Parse(VL_CORRIG_B.ToString().Split('.')[1].Substring(1, 1)) < 5) { valoraux = valoraux + 0.05; } Console.WriteLine("123.61 Valor =>>" + valoraux.ToString()); VL_CORRIG_B = double.Parse("123.66"); valoraux = Math.Round(VL_CORRIG_B, 1, MidpointRounding.AwayFromZero); if (((VL_CORRIG_B.ToString().Split('.').Length > 1) && VL_CORRIG_B.ToString().Split('.')[1].Length > 1) && int.Parse(VL_CORRIG_B.ToString().Split('.')[1].Substring(1, 1)) > 0 && int.Parse(VL_CORRIG_B.ToString().Split('.')[1].Substring(1, 1)) < 5) { valoraux = valoraux + 0.05; } Console.WriteLine("123,66 Valor =>>" + valoraux.ToString()); VL_CORRIG_B = double.Parse("123.00"); valoraux = Math.Round(VL_CORRIG_B, 1, MidpointRounding.AwayFromZero); if (((VL_CORRIG_B.ToString().Split('.').Length > 1) && VL_CORRIG_B.ToString().Split('.')[1].Length > 1) && int.Parse(VL_CORRIG_B.ToString().Split('.')[1].Substring(1, 1)) > 0 && int.Parse(VL_CORRIG_B.ToString().Split('.')[1].Substring(1, 1)) < 5) { valoraux = valoraux + 0.05; } Console.WriteLine("123,00 Valor =>>" + valoraux.ToString());
123.61 Valor =>> 123.65
123,66 Valor =>> 123.7espero que te ajude
- Editado J.G. _ segunda-feira, 5 de novembro de 2018 21:49 correção2
- Marcado como Resposta Filipe B CastroModerator sexta-feira, 30 de novembro de 2018 20:16
-
Esta função vai fazer o que você precisa
public decimal ArredondaValor(decimal valor) { decimal sobra = (valor - decimal.Round(valor, 1)); if (sobra > 0) { valor = valor - sobra + Convert.ToDecimal("0,05"); } else { valor = decimal.Round(valor, 1); } return valor; }
Se a resposta contribuiu com seu aprendizado por favor marque como Útil
Se solucionou seu problema por favor marque como Resposta
Atenção, se seu problema foi resolvido não deixe o post aberto
Visite : www.codigoexpresso.com.br- Editado Código Expresso segunda-feira, 5 de novembro de 2018 23:38 Correção
- Marcado como Resposta Filipe B CastroModerator sexta-feira, 30 de novembro de 2018 20:16
Todas as Respostas
-
Olá.
É meio que uma solução não muito bonita.
mas consegui aqui assim:
double VL_CORRIG_B = double.Parse("123.61"); double valoraux = Math.Round(VL_CORRIG_B, 1, MidpointRounding.AwayFromZero); if (((VL_CORRIG_B.ToString().Split('.').Length > 1) && VL_CORRIG_B.ToString().Split('.')[1].Length > 1) && int.Parse(VL_CORRIG_B.ToString().Split('.')[1].Substring(1,1)) > 0 && int.Parse(VL_CORRIG_B.ToString().Split('.')[1].Substring(1, 1)) < 5) { valoraux = valoraux + 0.05; } Console.WriteLine("123.61 Valor =>>" + valoraux.ToString()); VL_CORRIG_B = double.Parse("123.66"); valoraux = Math.Round(VL_CORRIG_B, 1, MidpointRounding.AwayFromZero); if (((VL_CORRIG_B.ToString().Split('.').Length > 1) && VL_CORRIG_B.ToString().Split('.')[1].Length > 1) && int.Parse(VL_CORRIG_B.ToString().Split('.')[1].Substring(1, 1)) > 0 && int.Parse(VL_CORRIG_B.ToString().Split('.')[1].Substring(1, 1)) < 5) { valoraux = valoraux + 0.05; } Console.WriteLine("123,66 Valor =>>" + valoraux.ToString()); VL_CORRIG_B = double.Parse("123.00"); valoraux = Math.Round(VL_CORRIG_B, 1, MidpointRounding.AwayFromZero); if (((VL_CORRIG_B.ToString().Split('.').Length > 1) && VL_CORRIG_B.ToString().Split('.')[1].Length > 1) && int.Parse(VL_CORRIG_B.ToString().Split('.')[1].Substring(1, 1)) > 0 && int.Parse(VL_CORRIG_B.ToString().Split('.')[1].Substring(1, 1)) < 5) { valoraux = valoraux + 0.05; } Console.WriteLine("123,00 Valor =>>" + valoraux.ToString());
123.61 Valor =>> 123.65
123,66 Valor =>> 123.7espero que te ajude
- Editado J.G. _ segunda-feira, 5 de novembro de 2018 21:49 correção2
- Marcado como Resposta Filipe B CastroModerator sexta-feira, 30 de novembro de 2018 20:16
-
Esta função vai fazer o que você precisa
public decimal ArredondaValor(decimal valor) { decimal sobra = (valor - decimal.Round(valor, 1)); if (sobra > 0) { valor = valor - sobra + Convert.ToDecimal("0,05"); } else { valor = decimal.Round(valor, 1); } return valor; }
Se a resposta contribuiu com seu aprendizado por favor marque como Útil
Se solucionou seu problema por favor marque como Resposta
Atenção, se seu problema foi resolvido não deixe o post aberto
Visite : www.codigoexpresso.com.br- Editado Código Expresso segunda-feira, 5 de novembro de 2018 23:38 Correção
- Marcado como Resposta Filipe B CastroModerator sexta-feira, 30 de novembro de 2018 20:16