public static void Main()
decimal x = 12345.67890M;
Console.WriteLine("scale: " + x.GetScale());
Console.WriteLine("Precision: " + x.GetPrecision());
public static class Extensions{
public static int GetScale(this decimal value){
int[] bits = decimal.GetBits(value);
return (int) ((bits[3] >> 16) & 0x7F);
public static int GetPrecision(this decimal value){
int[] bits = decimal.GetBits(value);
decimal d = new Decimal(bits[0], bits[1], bits[2], false, 0);
return (int)Math.Floor(Math.Log10((double)d)) + 1;