public static (decimal multiplier, int exponent) Decompose(string value)
var split = value.Split('e');
return (decimal.Parse(split[0]), int.Parse(split[1]));
public static int GetDecimalPlaces(decimal value)
=> BitConverter.GetBytes(decimal.GetBits(value)[3])[2];
public static BigInteger ParseExtended(string value)
var(multiplier, exponent) = Decompose(value);
var decimalPlaces = GetDecimalPlaces(multiplier);
var power = (int)Math.Pow(10, decimalPlaces);
return (BigInteger.Pow(10, exponent) * (int)(multiplier * power)) / power;
public static void Main(string[] args)
Console.WriteLine(ParseExtended("2.36e6007").ToString("0.00e0000"));