For some reason C# lacks a decimal truncation function limiting result to a specified number of digits after a decimal point. Don't know what's the reasoning behind, but it stimulates the thoughts. Internet is plentiful with workarounds. A tipical answer is like this:

`Math.Truncate(2.22977777 * 1000) / 1000; // Returns 2.229`

So, we also want to provide our solution to this problem.

``` public static decimal Truncate(decimal value, byte decimals) {   decimal result = decimal.Round(value, decimals);   int c = decimal.Compare(value, result);   bool negative = decimal.Compare(value, 0) < 0;   if (negative ? c <= 0 : c >= 0)   {     return result;   }   return result - new decimal(1, 0, 0, negative, decimals); }```

Definitely, if the function were implemented by the framework it were much more efficient. We assume, however, that above's the best implementation that can be done externally.

All comments require the approval of the site owner before being displayed.
 Name E-mail Home page Remember Me Comment (Some html is allowed: `a@href@title, b, blockquote@cite, em, i, strike, strong, sub, super, u`) where the @ means "attribute." For example, you can use or
. Enter the code shown (prevents robots): Live Comment Preview
Archive
 < August 2022 >
SunMonTueWedThuFriSat
31123456
78910111213
14151617181920
21222324252627
28293031123
45678910
Blogroll
Statistics
Total Posts: 381
This Year: 2
This Month: 0
This Week: 0