using System.Globalization;
public static class FloatExtension
public static decimal RoundFirstSignificantDigit(this decimal input)
var values = input.ToString(CultureInfo.InvariantCulture).Split('.');
long firstValue = long.Parse(values[0]);
long secondValue = long.Parse(values[1]);
if (secondValue.ToString().Length >= 3)
int secondNumber = int.Parse(secondValue.ToString().Substring(1, 1));
int thirdNumber = int.Parse(secondValue.ToString().Substring(2, 1));
if (secondNumber < 5 && thirdNumber > 4)
var val = input - Math.Round(input, 0);
while (Math.Abs(val) < 1)
return Math.Round(input, precision);
public static void Main()
Console.WriteLine((49.103999999999999m).RoundFirstSignificantDigit());
Console.WriteLine((0.97399999999999998m).RoundFirstSignificantDigit());