Việc thực hiện là khác nhau giữa hai:
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);
}
nơi
NumberStyles.Float = AllowLeadingWhite | AllowTrailingWhite | AllowLeadingSign |
AllowDecimalPoint | AllowExponent,
NumberStyles.Number = AllowLeadingWhite | AllowTrailingWhite | AllowLeadingSign | AllowTrailingSign |
AllowDecimalPoint | AllowThousands
Vì vậy decimal.Parse
phép trailing dấu hiệu nhưng double.Parse
không.
Hình như documentation trên MSDN là không chính xác:
Parameter s chứa một số có dạng:
[ws] [dấu hiệu] [chữ số,] chữ số [.fractional-chữ số] [ ws]
Cần chỉ ra rằng dấu hiệu trailing cũng hợp lệ.
Nguồn
2014-04-25 15:29:34
Bạn có nghĩa là có '.TryParse' trong mẫu mã của mình không? – krillgar
câu hỏi hay cho 'Eric Lippert' –
Chúng chỉ chuyển các giá trị mặc định khác nhau cho trình phân tích cú pháp số. Giá trị 'thập phân' được định cấu hình để tìm kiếm các định dạng tiền phổ biến và' double' không phải là. – Gabe