Realizacja różni się między nimi:
public static double Parse(String s) {
return Parse(s, NumberStyles.Float| NumberStyles.AllowThousands, NumberFormatInfo.CurrentInfo);
}
public static Decimal Parse(String s) {
return Number.ParseDecimal(s, NumberStyles.Number, NumberFormatInfo.CurrentInfo);
}
gdzie
NumberStyles.Float = AllowLeadingWhite | AllowTrailingWhite | AllowLeadingSign |
AllowDecimalPoint | AllowExponent,
NumberStyles.Number = AllowLeadingWhite | AllowTrailingWhite | AllowLeadingSign | AllowTrailingSign |
AllowDecimalPoint | AllowThousands
Więc decimal.Parse
pozwala spływu oznaki ale double.Parse
nie.
Wygląda jak documentation na MSDN jest niedokładna:
Parametr s zawiera szereg postaci:
[WS] [znak] [cyfry] cyfry [.fractional-cyfry] [ WS]
należy wskazać, że spływu znak jest ważny, jak również.
Czy chcesz mieć '.TryParse' w swoim przykładzie kodu? – krillgar
ładne pytanie dla 'Eric Lippert' –
Po prostu przekazują różne wartości domyślne do parsera liczb. "Dziesiętny" jest skonfigurowany tak, aby szukać wspólnych formatów pieniężnych, a "podwójny" nie jest. – Gabe