Como arredondar um decimal para a saída?
-
22-08-2019 - |
Pergunta
Usando C #, eu quero formatar um decimal para exibir apenas duas casas decimais e depois vou tomar essa decimal e subtrai-lo para outro decimal. Eu gostaria de ser capaz de fazer isso sem ter que transformá-lo em uma corda primeiro para o formato e, em seguida, convertê-lo de volta a um decimal. Me desculpe, eu esqueça de especificar isso, mas eu não quero rodada, eu só quero cortar o último ponto decimal. Existe uma maneira de fazer isso?
Solução
Se você não deseja arredondar o decimal, você pode usar Decimal.Truncate. Infelizmente, ele só pode truncar TODOS os decimais. Para resolver isso, você poderia multiplicar por 100, truncar e dividir por 100, como este:
decimal d = ...;
d = Decimal.Truncate(d * 100) / 100;
E você poderia criar um método de extensão, se você está fazendo isso bastante vezes
public static class DecimalExtensions
{
public static decimal TruncateDecimal(this decimal @this, int places)
{
int multipler = (int)Math.Pow(10, places);
return Decimal.Truncate(@this * multipler) / multipler;
}
}
Outras dicas
Você pode usar:. Math.Round(number,2);
para arredondar um número para duas casas decimais
essa sobrecarga específico de Math.Round para exemplos.
Você não quero formatá-lo em seguida, mas para arredondar. Tente a função Math.Round.
Dê uma olhada Math.Round