public static void Main()
Console.WriteLine("input : {0} \n Output : {1}", "2.12300m", GetSignificantNumberOfDecimalPlaces(2.12300m));
Console.WriteLine("input : {0} \n Output : {1}", "2.123m", GetSignificantNumberOfDecimalPlaces(2.123m));
Console.WriteLine("input : {0} \n Output : {1}", "2.103450m", GetSignificantNumberOfDecimalPlaces(2.103450m));
Console.WriteLine("input : {0} \n Output : {1}", "2.0m", GetSignificantNumberOfDecimalPlaces(2.0m));
Console.WriteLine("input : {0} \n Output : {1}", "2.00m", GetSignificantNumberOfDecimalPlaces(2.00m));
Console.WriteLine("input : {0} \n Output : {1}", "2m", GetSignificantNumberOfDecimalPlaces(2m));
static int GetSignificantNumberOfDecimalPlaces(decimal d)
string inputStr = d.ToString();
int decimalIndex = inputStr.IndexOf(".") + 1;
return inputStr.Substring(decimalIndex ).TrimEnd(new[] { '0' }).Length;