Domanda

con C #, voglio formattare un decimale visualizza solo due cifre decimali e poi mi prenderò che decimale e sottrarre ad un altro decimale. Vorrei essere in grado di fare questo senza dover girare in una stringa prima di formattare e poi riconvertirlo in un decimale. Mi dispiace di aver dimenticato di specificare questo, ma io non voglio arrotondare, voglio solo tagliare fuori l'ultimo punto decimale. C'è un modo per fare questo?

È stato utile?

Soluzione

Se non si desidera arrotondare decimale, è possibile utilizzare Decimal.Truncate. Purtroppo, può troncare solo tutti i decimali. Per risolvere questo problema, si potrebbe moltiplicare per 100, troncare e dividere per 100, in questo modo:

decimal d = ...;
d = Decimal.Truncate(d * 100) / 100;

E si potrebbe creare un metodo di estensione, se si sta facendo abbastanza volte

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;
  }
}

Altri suggerimenti

È possibile utilizzare: Math.Round(number,2); per arrotondare un numero a due cifre decimali

.

questo sovraccarico specifico di Math.round per gli esempi.

Se non si desidera formattare allora, ma per arrotondare. Prova la funzione Math.round.

Date un'occhiata a Math.round

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top