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?

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top