Chaîne de conversion décimal: point de séparation au lieu d'une virgule
J'ai une chaîne de lire à partir d'une zone de texte. Il contient une virgule pour les décimales de séparation.
J'ai NumberFormatInfo.CurrencyDecimalSeparator
ensemble de ,
(virgule) mais quand je convertir la chaîne en décimal Convert.ToDecimal(mystring);
- je obtenir un point distinct de la valeur pour les décimales.
Exemple:
decimal a=Convert.ToDecimal("1,2345"); ----> decimal is 1.2345
J'ai essayé aussi:
double a=Convert.ToDouble("1,2345");
mais point pour les décimales de nouveau
- que diriez-vous,
"1,2345".Replace(",", ".").Replace(".", ".")
? - essayez de spécifier le format de fournisseur de: msdn.microsoft.com/ru-ru/library/9k6z9cdw(v=vs. 110).aspx
- Vous avez besoin de passer d'un format de fournisseur
- Format fournisseur est votre ami. Le séparateur décimal probablement devient intéressant lors de l'appel à ToString sur un nombre décimal.
- comment à propos de "1,234,5678"?
- que diriez -
"1,2345".ToString("0.####", System.Globalization.CultureInfo.InvariantCulture)
- Je voudrais partager avec vous la réponse suivante dans ce cas (Fonctionne excellent): stackoverflow.com/questions/36277684/...
Vous devez vous connecter pour publier un commentaire.
Tout cela est sur les cultures. Si vous avez toute autre culture que la "anglais US" (et aussi les bonnes manières de développement), vous devriez utiliser quelque chose comme ceci:
(évidemment, il faut remplacer le "en-US" avec la culture de votre numéro de la culture locale)
de la même façon, si vous voulez faire
ToString()
CultureInfo.InvariantCulture
pourrait être un meilleur choix. Voir un DotnetFiddle pour des exemples.Au lieu de les remplacer, nous pouvons la force de la culture comme
il donnera sortie 18.285
Merci pour toutes les réponses.
Parce que je dois écrire un nombre décimal dans un fichier xml, j'ai trouver le problème. Dans cette discussion, j'ai appris que le fichier xml de la norme utilisez le point pour les décimales de la valeur et c'est de la culture indépendante.
Donc ma solution est d'écrire dot nombre décimal dans un fichier xml et de convertir la chaîne lue à partir du même fichier xml
mystring.Replace(".", ",");
Grâce Agat pour la suggestion à la recherche du problème dans le contexte xml et Ε Г И І И О parce que je ne savais pas visual studio n'est pas le respect de la culture paramètres que j'ai dans mon code.
De l'affichage de votre décimal ou double des valeurs dans Visual Studio. Qui ne respecte pas les paramètres de culture que vous avez sur votre code.
Changer de Région et les paramètres de Langue de votre Panneau de configuration si vous voulez voir
decimal
etdouble
valeurs ayant la virgule comme séparateur décimal.J'ai fini par utiliser cette solution.
J'avais été confronté au même problème lors de l'utilisation de Convertir.ToSingle(my_value)
Si le système d'exploitation paramètres de langue est l'anglais 2.5 (exemple) sera pris en 2.5
Si la langue du système d'exploitation est l'allemand, de 2,5 seront traités comme des 2,5 qui est de 25
J'ai utilisé le invariantculture IFormat fourni et il fonctionne. Il les traite de '.' comme '.' au lieu de ',' indépendamment de la langue du système.
float var = Convert.ToSingle(my_value, Système.De la mondialisation.CultureInfo.InvariantCulture);