public static class FloatExtension
public static decimal RoundFirstSignificantDigit(this decimal input)
var val = input - Math.Round(input,0);
while (Math.Abs(val) < 1)
return Math.Round(input, precision);
public static void Main()
Console.WriteLine((-0.001m).RoundFirstSignificantDigit());
Console.WriteLine((-0.00367m).RoundFirstSignificantDigit());
Console.WriteLine((0.000000564m).RoundFirstSignificantDigit());
Console.WriteLine((0.00000432907543029m).RoundFirstSignificantDigit());
Console.WriteLine((0m).RoundFirstSignificantDigit());
Console.WriteLine((2.000367m).RoundFirstSignificantDigit());
Console.WriteLine((-2.000367m).RoundFirstSignificantDigit());