情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

Single.Parse メソッド (String, IFormatProvider)

2013/12/12

指定したカルチャに固有の書式による数値の文字列形式を、それと等価な単精度浮動小数点数に変換します。

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

sMinValue 未満の数値か、MaxValue より大きい数値を表しています。

このオーバーロードは、通常、さまざまな方法で書式設定できるテキストを Single 値に変換するために使用されます。たとえば、これを使用して、ユーザーが HTML テキスト ボックスに入力したテキストを数値に変換できます。

s パラメーターは、NumberStyles.Float フラグと NumberStyles.AllowThousands フラグの組み合わせを使用して解釈されます。s パラメーターには、provider で指定されるカルチャの NumberFormatInfo.PositiveInfinitySymbolNumberFormatInfo.NegativeInfinitySymbol、または NumberFormatInfo.NaNSymbol か、次の書式の文字列を格納できます。

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

省略可能な要素は、角かっこ ([および]) で囲まれています。"digits" という語を含む要素は、0 から 9 までの一連の数字から構成されます。

要素

説明

ws

一連の空白文字。

sign

マイナス記号 (-) またはプラス記号 (+)。

integral-digits

数値の整数部分を指定する 0 ~ 9 の範囲の一連の数字。一連の integral-digits は、桁区切り記号で区切ることができます。たとえば、カルチャによっては、桁区切り文字としてコンマ (,) が使用されます。文字列に integral-digits 要素が含まれる場合は、fractional-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 メソッドは、s パラメーターの書式に関する情報を提供する NumberFormatInfo オブジェクトを返します。provider パラメーターを使用すると、解析操作にカスタムの書式情報を提供できます。次の 3 とおりの方法があります。

  • 書式情報を提供するカルチャを表す CultureInfo オブジェクトを渡すことができます。この GetFormat メソッドは、カルチャの数値書式情報を提供する NumberFormatInfo オブジェクトを返します。

  • 数値書式情報を提供する実際の NumberFormatInfo オブジェクトを渡すことができます。対応する GetFormat の実装では、単にそれ自身が返されます。

  • IFormatProvider を実装するカスタム オブジェクトを渡すことができます。その GetFormat メソッドは、書式情報を提供する NumberFormatInfo オブジェクトをインスタンス化し、返します。

providernull の場合や、NumberFormatInfo を取得できない場合は、現在のシステムのカルチャの書式情報が使用されます。

解析操作中に s パラメーターで区切り記号が検出され、適用可能な通貨または数値の桁区切り記号とグループ区切り記号が同じ場合、解析操作では、区切り記号がグループ区切り記号ではなく桁区切り記号であると見なされます。区切り記号の詳細については、「CurrencyDecimalSeparator」、「NumberDecimalSeparator」、「CurrencyGroupSeparator」、および「NumberGroupSeparator」を参照してください。

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

表示: