Ich muss eine Zahl auf 2 Dezimalstellen abschneiden, was im Grunde bedeutet Abschneiden der zusätzlichen Ziffern.Eine Zahl auf angegebene Dezimalstellen abschneiden
ZB:
2.919 -> 2.91
2.91111 -> 2.91
Warum? Dies ist, was SQL Server tut, wenn eine bestimmte Genauigkeit von gespeichert wird. Wenn z. B. eine Spalte Dezimal (8,2) ist und Sie versuchen, eine Zahl von 9.1234 einzufügen/zu aktualisieren, werden die 3 und 4 abgeschnitten.
Ich muss genau dasselbe in C# -Code tun.
Die einzigen Möglichkeiten, dass ich es zu tun, sind entweder denken kann:
Mit dem stringformatter zu „drucken“ es nur zwei Dezimalstellen, und dann in eine Dezimalzahl umzuwandeln, zB :
decimal tooManyDigits = 2.1345 decimal ShorterDigits = Convert.ToDecimal(tooManyDigits.ToString("0.##")); // ShorterDigits is now 2.13
ich damit nicht zufrieden bin, weil es eine zu-String und dann eine andere Zeichenfolge dezimal Umwandlung, die ein bisschen verrückt scheint sich bringt.
Mit Math.Truncate (die nur eine ganze Zahl annimmt), so ich es mit 100 multiplizieren können, kürzen sie, dann teilen mit 100. Beispiel:
decimal tooLongDecimal = 2.1235; tooLongDecimal = Math.Truncate(tooLongDecimal * 100)/100;
Ich bin auch nicht glücklich mit dies, weil wenn ichLongDecimal ist 0, Ich bekomme eine Division durch 0 Fehler.
Sicherlich gibt es einen besseren + einfacheren Weg! Irgendwelche Vorschläge?
'0/100' von 0 Fehler nicht eine Kluft. Es ist "0", was Sie erwarten würden. – xbonez
(0 * 100)/100 = 0 –
@sehe truncate! = Rund –