c# Convertir.ToDouble format d'erreur d'exception
Je suis en train de convertir cette chaîne à double
Convert.ToDouble("1.12");
et c'est la sortie
Système.FormatException était non gérée.
Dois-je faire quelque chose comme cela?
public static double ConvertToDouble(string ParseVersion)
{
double NewestVersion;
try
{
NewestVersion = Convert.ToDouble(ParseVersion);
}
catch
{
ParseVersion = ParseVersion.Replace('.', ',');
NewestVersion = Convert.ToDouble(ParseVersion);
}
return NewestVersion;
}
ConvertToDouble("1.12");
Ou est-il une solution plus simple?
Convert.ToDouble("1.12")
fonctionne pour moi. Pas d'exception. Quelle culture exécutez-vous?OriginalL'auteur sczdavos | 2011-07-23
Vous devez vous connecter pour publier un commentaire.
double.Parse
utilisera la culture par défaut. Il semble que vous voulez l'invariant de la culture:EDIT: Juste pour être clair, de toute évidence, vous ne devriez pas utiliser cette si vous essayez d'analyser le texte entré par l'utilisateur dans une culture différente. C'est pour une utilisation lorsque vous avez reçu des données dans l'invariant de la culture (comme la plupart des machine-to-machine de texte données de base sont les formats) et que vous souhaitez le faire valoir lors de l'analyse.
double x = Double.Parse("1,12", Système.De la mondialisation.NumberFormatInfo.InvariantInfo); Console.WriteLine(x); x = 112 (sic!)
Je pense que vous avez mal compris la question. Le problème que je comprends, c'est que l'OP est un système où la virgule est l'utilisateur par défaut séparateur décimal - mais il essaie de parse valeur n'est pas dans la culture de l'utilisateur, mais en utilisant le "." comme séparateur décimal.
Si l'OP créé autonome méthode, je pense qu'il est à la recherche de solution générale pour analyser doubles. Seuls les OP sait )).
Jon Skeet comprendre mon problème. Je veux convertir une variable de chaîne à double. Et je veux utiliser le "." comme séparateur décimal, mais je suis d'erreur en raison de CultureInfo. J'ai donc utilisé le double.Parse("1.12", CultureInfo.InvariantCulture);
OriginalL'auteur Jon Skeet
Vous n'avez pas à remplacer
.
à,
.. cependant une meilleure façon est d'utiliser l' .netTryParse
méthode comme:Edit: noter Également que, par le remplacement de
.
par,
vous obtenez de mauvais résultats, par exemple1.12
:OriginalL'auteur Jalal Said
Convertir.ToDouble utilise Double.Analyser en interne. Si vous n'êtes pas sûr de la culture, vous devriez utiliser une surcharge de Double.Analyser en précisant la culture:
OriginalL'auteur Falanwe
Gardez à l'esprit, ce problème peut dépendre de l'endroit où la chaîne d'entrée. Si elle est lue à partir d'une base de données comme un objet, vous pouvez résoudre votre problème en le gardant comme un objet, et à l'aide Convertir.ToDouble() comme suit:
OriginalL'auteur Gary Huckabone