MSDN Library
信息
您所需的主题如下所示。但此主题未包含在此库中。

Decimal.Parse 方法 (String, IFormatProvider)

2013/12/13

使用指定的区域性特定的格式信息将数字的字符串表示形式转换为它的 Decimal 等效项。

Namespace:  System
程序集:  mscorlib(位于 mscorlib.dll 中)

public static decimal Parse(
	string s,
	IFormatProvider provider
)

参数

s
类型: System.String
要转换的数字的字符串表示形式。
provider
类型: System.IFormatProvider
一个 IFormatProvider,它提供有关 s 的区域性特定分析信息。

返回值

类型: System.Decimal
Decimal 数字,它等效于 provider 所指定的 s 包含的数字。

异常条件
ArgumentNullException

snull

FormatException

s 的格式不正确。

OverflowException

s 表示小于 MinValue 或大于 MaxValue 的数字

Parse(String, IFormatProvider) 方法重载通常用于将可以多种方式格式化的文本转换为 Decimal 值。例如,它可以用于将用户输入 HTML 文本框的文本转换为数值。

s 参数包含一个如下形式的数字:

[ws][sign][digits,]digits[.fractional-digits][ws]

方括号([ 和 ])中的元素是可选的。下表描述每个元素。

元素

说明

ws

可选的空白。

sign

一个可选符号。

digits

一系列从 0 到 9 之间的数字。

,

区域性特定的千位分隔符。

.

区域性特定的小数点符号。

fractional-digits

一系列从 0 到 9 之间的数字。

使用 NumberStyles.Number 样式解释 s 参数。这意味着允许空白和千位分隔符,但不允许货币符号。若要显式定义可在 s 中存在的元素(例如,货币符号、千位分隔符和空白),请使用 Decimal.Parse(String, NumberStyles, IFormatProvider) 方法。

provider 参数是 IFormatProvider 的实现,例如 NumberFormatInfoCultureInfo 对象。provider 参数提供用于进行分析的区域性特定信息。如果 providernull,则使用当前的线程区域性。

Decimal 对象的精度为 29 位。如果 s 表示的数字的位数多于 29 位,但是有小数部分,且落在 MaxValueMinValue 范围内,则使用就近舍入方法将该数字舍入到(而非截断为)29 位。

如果在执行分析操作的过程中在 s 参数中遇到分隔符,并且适用的货币分隔符或小数位分隔符和组分隔符相同,则分析操作假定该分隔符是小数点分隔符,而不是组分隔符。有关分隔符的更多信息,请参见 CurrencyDecimalSeparatorNumberDecimalSeparatorCurrencyGroupSeparatorNumberGroupSeparator

下面的示例演示如何使用 Parse(String, IFormatProvider) 方法分析字符串。该方法会先尝试使用当前区域性来分析字符串。如果分析操作失败,它将尝试使用非特定区域性来分析字符串。如果此分析操作失败,它将尝试使用固定区域性来分析字符串。请注意,在实际应用程序中,Decimal.TryParse(String, NumberStyles, IFormatProvider, Decimal) 方法最适用于此目的。


public static decimal GetDecimal(string value)
{
   decimal number;
   CultureInfo culture = null;

   // Return if string is empty
   if (String.IsNullOrEmpty(value))
      throw new ArgumentNullException("The input string is invalid.");

   // Determine if value can be parsed using current culture.
   try
   {
      culture = CultureInfo.CurrentCulture;
      number = decimal.Parse(value, culture);
      return number;
   }
   catch {}
   // If Parse operation fails, see if there's a neutral culture.
   try {
      culture = culture.Parent;
      number = decimal.Parse(value, culture);
      return number;
   }   
   catch {}
   // If there is no neutral culture or if parse operation fails, use
   // the invariant culture.
   culture = CultureInfo.InvariantCulture;
   try {
      number = decimal.Parse(value, culture);
      return number;
   }
   // All attempts to parse the string have failed; rethrow the exception.
   catch (FormatException e)
   {
      throw new FormatException(String.Format("Unable to parse '{0}'.", value), 
                                e);
   }
}


Windows Phone OS

受以下版本支持: 8.0, 7.1, 7.0

Windows Phone

显示:
© 2016 Microsoft