Próbuję przeanalizować ciąg znaków, jak "45.59" w postaci dziesiętnej. Z jakiegoś powodu otrzymuję wyjątek, że dane wejściowe nie miały poprawnego formatu. Nie interesują mnie wszystkie rzeczy związane z lokalizacją, ponieważ nie będzie to program globalny. Oto, co robię. Czy widzisz jakieś problemy?Problem podczas analizowania tekstu waluty na typ dziesiętny
NumberFormatInfo MyNFI = new NumberFormatInfo();
MyNFI.NegativeSign = "-";
MyNFI.NumberDecimalSeparator = ".";
MyNFI.NumberGroupSeparator = ",";
MyNFI.CurrencySymbol = "$";
decimal d = decimal.Parse("$45.00", MyNFI); // throws exception here...
A jeśli nadal chcesz użyć 'NumerFormatInfo':' decimal d = decimal.Parse ("$ 45.00", NumberStyles.Currency, MyNFI); ' –
To naprawiło to. Po prostu chciałbym zrozumieć, dlaczego moje pierwsze podejście nie działa ... – PICyourBrain
Dokumentacja MSDN na Decimal.Parse stwierdza: "Parametr s jest interpretowany za pomocą stylu NumberStyles.Number. Oznacza to, że białe spacje i separatory tysięcy są dozwolone, ale symbole walut nie są. Aby wyraźnie zdefiniować elementy (takie jak symbole walut, separatory tysięcy i białe znaki), które mogą występować w s, użyj metody Decimal.Parse (String, NumberStyles, IFormatProvider). " –