此页面有用吗?
您对此内容的反馈非常重要。 请告诉我们您的想法。
更多反馈?
1500 个剩余字符
导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

Single.Parse 方法 (String, IFormatProvider)

2013/12/13

将具有指定区域性特定格式的数字的字符串表示形式转换为它的等效单精度浮点数字。

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

public static float Parse(
	string s,
	IFormatProvider provider
)

参数

s
类型: System.String
包含要转换的数字的字符串。
provider
类型: System.IFormatProvider
一个对象,提供有关 s 的区域性特定格式设置信息。

返回值

类型: System.Single
s 中指定的数值或符号等效的单精度浮点数字。

异常条件
ArgumentNullException

snull

FormatException

s 不是一个有效格式的数字。

OverflowException

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

此重载通常用于将可以多种方式格式化的文本转换为 Single 值。例如,它可以用于将用户输入 HTML 文本框的文本转换为数值。

通过使用 NumberStyles.FloatNumberStyles.AllowThousands 标志的组合来解释 s 参数。s 参数可包含由 provider 指定的区域性的 NumberFormatInfo.PositiveInfinitySymbolNumberFormatInfo.NegativeInfinitySymbolNumberFormatInfo.NaNSymbol,也可包含以下格式的字符串:

[ws][sign]integral-digits[.[fractional-digits]][E[sign]exponential-digits][ws]

可选元素括在方括号([ 和 ])中。包含“digits”一词的元素由一系列从 0 到 9 之间的数字字符组成。

元素

说明

ws

一系列空白字符。

sign

负号 (-) 或正号 (+)。

integral-digits

一系列介于 0 到 9 之间的数字,用于指定数字的整数部分。integral-digits 组可以用组分隔符分开。例如,在某些区域性中,用逗号 (,) 作为千位分隔符。当字符串包含 fractional-digits 元素时,可以没有 integral-digits 元素。

.

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

fractional-digits

一系列介于 0 到 9 之间的数字,用于指定数字的小数部分。

E

“e”或“E”字符,指示用指数(科学型)表示法表示值。

exponential-digits

一系列介于 0 到 9 之间的数字,用于指定指数。

有关数值格式的更多信息,请参见 [0D1364DA-5B30-4D42-8E6B-03378343343F] 主题。

provider 参数是 IFormatProvider 的实现,其 GetFormat 方法返回一个 NumberFormatInfo 对象,该对象提供有关格式设置的区域性特定信息。在调用 Parse(String, IFormatProvider) 方法时,它会调用 provider 参数的 GetFormat 方法,并向其传递一个表示 NumberFormatInfo 类型的 Type 对象。其 GetFormat 方法然后返回的 NumberFormatInfo 对象将提供有关 s 参数的格式的信息。使用 provider 参数向分析操作提供自定义的格式设置信息的方法有以下三种:

如果 providernull 或者无法获取 NumberFormatInfo,则使用当前系统区域性的格式设置信息。

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

下面的示例演示如何使用 Parse(String, IFormatProvider) 方法重载来分析字符串。该方法会先尝试使用当前区域性来分析字符串。如果分析操作失败,它将尝试使用非特定区域性来分析字符串。如果此分析操作失败,它将尝试使用固定区域性来分析字符串。请注意,Single.TryParse(String, NumberStyles, IFormatProvider, Single) 方法实际上更适合于分析未知字符串,这是因为它不要求例程处理重复的异常。


public static float GetSingle(string value)
{
   float number;
   CultureInfo culture = null;

   // Throw exception 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 = float.Parse(value, culture);
      return number;
   }
   catch {}
   // If Parse operation fails, see if there's a neutral culture.
   try {
      culture = culture.Parent;
      number = float.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 = float.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

显示:
© 2015 Microsoft