public static void Main()
string userInput = "0.21150";
int significantDigitsMin =Methods.GetSignificantNumberOfDecimalPlaces(min);
int significantDigitsMax =Methods.GetSignificantNumberOfDecimalPlaces(max);
int significantDigitsUserInput =Methods.GetSignificantNumberOfDecimalPlaces(userInput);
if (significantDigitsMax > significantDigitsUserInput)
Console.WriteLine("ERROR");
Console.WriteLine(Methods.TruncateToSignificantDigits(double.Parse(userInput), significantDigitsMax));
public static class Methods
public static double TruncateToSignificantDigits(this double d, int digits){
double scale = Math.Pow(10, Math.Floor(Math.Log10(Math.Abs(d))) + 1);
return scale * Math.Round(d / scale, digits);
public static int GetSignificantNumberOfDecimalPlaces(string d)
string inputStr = d.ToString();
inputStr = inputStr.Replace(".", string.Empty);
inputStr = inputStr.TrimStart('0');
Console.WriteLine(inputStr.Length);