public static void Main()
decimal importe = 7150.72m;
int NumDecimalesImporte = 2;
int NumDecimalesTipoCambio = 2;
decimal TipoCambio = 20.5804m;
decimal TipoCambioUSD = 17.4159m;
var powImporte = (decimal)Math.Pow(10, - NumDecimalesImporte);
var powTipoCambio = (decimal)Math.Pow(10,- NumDecimalesTipoCambio);
decimal LimiteInferior = (importe - (powImporte)/ 2) * (TipoCambio - (powTipoCambio / 2) / (TipoCambioUSD + ((powTipoCambio / 2) - (decimal)Math.Pow(10, -12))));
decimal limitSuperior = (importe + (powImporte) / 2) * (TipoCambio + (powTipoCambio / 2) / (TipoCambioUSD + ((powTipoCambio / 2) - (decimal)Math.Pow(10, -12))));
decimal step = (decimal)Math.Pow(10, NumDecimalesImporte);
decimal tmp = Math.Truncate(step * LimiteInferior);
decimal resultLimiteInferior = tmp / step;
decimal resultLimiteSuperior = Math.Round(limitSuperior, 2);
Console.WriteLine("Limite inferior: "+resultLimiteInferior + " Limite Superior: " + resultLimiteSuperior);