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
 < September 2020 >
SunMonTueWedThuFriSat
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910
Blogroll
Statistics
Total Posts: 374
This Year: 7
This Month: 0
This Week: 0