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.
Remember Me
a@href@title, b, blockquote@cite, em, i, strike, strong, sub, super, u