11
votes

Convertir la chaîne en mystère décimale

Je suis confronté à un problème de la conversion de la chaîne en décimale en utilisant C # .NET. Le problème est que j'ai écrit le code suivant et fonctionne bien sur mon système de développement Windows 7 .NET Framework 3.5. Mais si je déplace l'application sur le cadre de Windows 2003 Server 3.5, le résultat est différent. Quelqu'un peut-il comprendre ce qui se passe là-bas?

code: xxx

Windows 7 résultat: 85.00 Windows 2003 Résultat: 8500


1 commentaires

Quelle est la valeur de strdec


5 Réponses :


22
votes

Il se peut que la région et la culture des paramètres de votre serveur soient définies avec , code> comme décimal et . code> comme regroupement de chiffres. Voir Paramètres du panneau de configuration / de la région et de la culture.

Si cette chaîne numérique est générée par votre application, j'utiliserais cultureinfo.invariantculture code> dans les deux endroits. P>

     Decimal dec = 85.0m;
     string s = dec.ToString (CultureInfo.InvariantCulture);
     decimal.Parse(s, CultureInfo.InvariantCulture);


1 commentaires

L'astucieux n'a pas dit quelle était la chaîne d'entrée, mais je soupçonne que c'est correct. +1



9
votes

Vous êtes affecté par les paramètres régionaux. Lorsque la chaîne 85.00 est analysée dans une locale où l'arrêt complet est utilisé comme séparateur décimal, le résultat est de 85,00. Si la virgule est utilisée comme séparateur décimal, le résultat est de 8500.

Utilisez la surcharge dans laquelle vous spécifiez un cultureInfo : xxx

Vous pouvez également utiliser CultureInfo.invarianTculture Quelle est la valeur par défaut .net cultureInfo et similaire à l'anglais cultureinfo .

dans une application de qualité de production Vous devez toujours spécifier ou connaître le cultureInfo utilisé lorsque vous analysez et formatez les chaînes. Si vous utilisez l'analyse de code sur votre projet, vous obtiendrez des avertissements lorsque vous oubliez de le faire: CA1304: Spécifiez le cultureInfo .


0 commentaires

3
votes

Essayez d'utiliser le mode culturel ignorant xxx


1 commentaires

Oui!! C'était!! Merci!!



3
votes

Nous sommes confrontés à la question lorsque xxx

était 0,5

, mais xxx

était 5 !

La solution consistait à utiliser xxx


0 commentaires

1
votes

Donc, j'ai utilisé la fonction suivante xxx

mais elle uniquement pour le russe comme séparateur décimal


0 commentaires