Friday, November 13, 2009

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.

Friday, November 13, 2009 2:31:26 PM UTC      Comments [0] -
Tips and tricks
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
 < June 2024 >
SunMonTueWedThuFriSat
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456
Categories
 .NET AI Angular AngularJS Announce ASP.NET Azure BizTalk Server C++ Incremental Parser Java javascript JSF and Facelets kendoui ML.NET SCCBridge SQL Server puzzle Thinking aloud Tips and tricks Window Search xslt
Blogroll
Statistics
Total Posts: 387
This Year: 3
This Month: 0
This Week: 0