static decimal RoundFirstSignificantDigit(string input) {
decimal significantDigit;
if (!decimal.TryParse(input,out significantDigit))
throw new ArgumentException("Invalid input!!");
var floatLength = input.Split('.')[1].Length;
return Math.Round(significantDigit, floatLength - 1, MidpointRounding.AwayFromZero);
public static void Main()
Console.WriteLine(RoundFirstSignificantDigit("123.99999"));
Console.WriteLine(RoundFirstSignificantDigit("123.823467283762378"));
Console.WriteLine(RoundFirstSignificantDigit("123.823467283762398"));
Console.WriteLine(RoundFirstSignificantDigit("123.09999999"));
Console.WriteLine(RoundFirstSignificantDigit("122.00000009"));
Console.WriteLine(RoundFirstSignificantDigit("124.81379281"));
Console.WriteLine(RoundFirstSignificantDigit("129.07872345"));
Console.WriteLine(RoundFirstSignificantDigit("129.07872344"));