Je dois analyser la chaîne "1.2345E-02" (un nombre exprimé en notation exponentielle) à un type de données décimales, mais Decimal.Parse("1.2345E-02")
lance simplement une erreur
Réponses
Trop de publicités?En plus de spécifier les NumberStyles, je vous recommande d'utiliser la fonction decimal.TryParse telle que :
decimal result;
if( !decimal.TryParse("1.2345E-02", NumberStyles.Any, CultureInfo.InvariantCulture, out result) )
{
// do something in case it fails?
}
Comme alternative à NumberStyles.Tout ce que vous pouvez utiliser un ensemble spécifique si vous êtes certain de vos formats. par exemple :
NumberStyles.AllowExponent | NumberStyles.Float
Attention à la réponse sélectionnée : il y a une subtilité spécifiant System.Globalization.NumberStyles.Float dans Decimal.Parse qui pourrait conduire à un System.FormatException car votre système peut être en attente d'un nombre formé avec ',' au lieu de '.'
Par exemple, en notation française, "1.2345E-02" est invalide, vous devez d'abord le convertir en "1,2345E-02".
En conclusion, utilisez quelque chose du genre :
Decimal.Parse(valueString.Replace('.',','), System.Globalization.NumberStyles.Float);