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
 < November 2009 >
SunMonTueWedThuFriSat
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345
Blogroll
Statistics
Total Posts: 382
This Year: 1
This Month: 0
This Week: 0