Analyser la chaîne décimale, les virgules et les points
Comment analyser la chaîne décimale de sorte qu'il pourrait fonctionner pour les deux formats - w/virgules et les points?
[Fact]
public void foo(){
var a="1,1";
var b="1.1";
Assert.Equal(Parse(a),Parse(b));
}
private decimal Parse(string s){
return decimal.Parse(s,NumberStyles.Any,
CultureInfo.InvariantCulture);
}
de sortie:
Test 'Unit.Sandbox.foo' failed: Assert.Equal() Failure
Expected: 11
Actual: 1,1
Même si il analysé, pourquoi auraient-ils être égaux? L'une est de 1 point 1, l'autre est onze...? (puisque vous déclarez expressément l'invariant de la culture)
Gravel, je ne suis pas sûr que je Vous ai bien compris. De toute façon le but est d'écrire analyser la fonction de sorte qu'il serait compris les deux formats. Affirmer reflète ce que je suis en train de réaliser.
Je crois que la Marque faisait allusion à l'ambiguïté de l'appui tant du point décimal et le séparateur des milliers à l'aide de différentes cultures. Mais je crois que vous ne sont concernés dans l'analyse des points décimaux?
J' comprendre, mais sont tous les deux des numéros valides dans les deux ".=point" et un ",=point" de la culture. Comment vous proposez-vous de comprendre ce qui est prévu? Dans le "1,1" vous pourriez peut-être faux, mais que dire de "1.001" vs "1,001" ? Sont-ils les mêmes? Indépendamment du fait que vous utilisez , ou . en tant que "point", qui est l'un des mille et un, et l'autre est l'un virgule zéro zéro un.
cela me rappelle "l'Humanité à l'échec" post de blog de Jon bit.ly/kQUJcR T_T
Gravel, je ne suis pas sûr que je Vous ai bien compris. De toute façon le but est d'écrire analyser la fonction de sorte qu'il serait compris les deux formats. Affirmer reflète ce que je suis en train de réaliser.
Je crois que la Marque faisait allusion à l'ambiguïté de l'appui tant du point décimal et le séparateur des milliers à l'aide de différentes cultures. Mais je crois que vous ne sont concernés dans l'analyse des points décimaux?
J' comprendre, mais sont tous les deux des numéros valides dans les deux ".=point" et un ",=point" de la culture. Comment vous proposez-vous de comprendre ce qui est prévu? Dans le "1,1" vous pourriez peut-être faux, mais que dire de "1.001" vs "1,001" ? Sont-ils les mêmes? Indépendamment du fait que vous utilisez , ou . en tant que "point", qui est l'un des mille et un, et l'autre est l'un virgule zéro zéro un.
cela me rappelle "l'Humanité à l'échec" post de blog de Jon bit.ly/kQUJcR T_T
OriginalL'auteur Arnis Lapsa | 2011-05-02
Vous devez vous connecter pour publier un commentaire.
Vous pourriez essayer:
en effet, mais je ne vois pas comment il pourrait soutenir le séparateur de milliers, si les deux virgule et le point devrait être traité de la même manière...
il n'est pas possible... 🙁
L., ce n'est pas possible?
sans ambiguïté analyser ces 2 formats
OriginalL'auteur Thomas Levesque
Comment à ce sujet?
OriginalL'auteur Bat_Programmer
Vous devriez obtenir le résultat souhaité par la modification de la Devise séparateur décimal est la virgule avant un analyser sur une virgule décimale de la chaîne. Il y a quelques ressources alimentaires ici:
http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.currencydecimalseparator.aspx#Y888
Vous pouvez également mettre en place votre propre Iformatprovider comme expliqué ici:
http://msdn.microsoft.com/en-us/library/t7xswkc6.aspx
http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.aspx
Oh, ou vous pourriez faire un sale hack et simplement exécuter une chaîne de remplacer "," avec "." 😉
OriginalL'auteur Roja Buck