Tengo un problema para que TryParse funcione correctamente para mí. Tengo una lista de valores que, estoy seguro, son válidos (ya que provienen de otro componente de nuestro sistema) pero me gustaría asegurarme de que haya un correcto manejo de errores.Error de TryParse con números negativos
Aquí es una lista de ejemplo de mis valores:
20,00
20,00
-150,00
Y aquí es el método que originalmente escribió:
private decimal CalculateValue(IEnumerable<XElement> summaryValues)
{
decimal totalValue = 0;
foreach (XElement xElement in summaryValues)
{
decimal successful;
Decimal.TryParse(xElement.Value, out successful);
if (successful > 0)
totalValue += Decimal.Parse(xElement.Value);
}
return totalValue;
}
La variable 'exitoso' devolvía falso por -150.00, así que agregué NumberStyles:
private decimal CalculateValue(IEnumerable<XElement> summaryValues)
{
decimal totalValue = 0;
foreach (XElement xElement in summaryValues)
{
decimal successful;
Decimal.TryParse(xElement.Value, NumberStyles.AllowLeadingSign, null, out successful);
if (successful > 0)
totalValue += Decimal.Parse(xElement.Value, NumberStyles.AllowLeadingSign);
}
return totalValue;
}
Sin embargo, ahora que tengo NumberStyles allí, ¡ninguno de los números se analizará! Me siento bien con tener IFormatProvider establecido en nulo ya que todo esto está dentro de nuestro sistema. ¿Alguien ve lo que puedo estar haciendo mal?
¿Por qué estás de análisis dos veces? – SLaks