エクスポート (0) 印刷
すべて展開
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

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

2013/12/12

指定したカルチャ固有の書式情報を使用して、文字列形式の数値をそれと等価の Decimal に変換します。

Namespace:  System
アセンブリ:  mscorlib (mscorlib.dll 内)

public static decimal Parse(
	string s,
	IFormatProvider provider
)

パラメーター

s
型: System.String
変換する数値の文字列形式。
provider
型: System.IFormatProvider
s に関するカルチャ固有の解析情報を提供する IFormatProvider

戻り値

型: System.Decimal
provider で指定されたとおりの、s に格納されている数値と等価の Decimal

例外条件
ArgumentNullException

snull です。

FormatException

s の書式が正しくありません。

OverflowException

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

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

s パラメーターには、次の書式の数値を指定します。

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

角かっこ ([ と ]) で囲まれている要素は省略可能です。各要素について次の表で説明します。

要素

説明

ws

省略可能な空白。

sign

省略可能な符号。

digits

0 から 9 までの一連の数字。

,

カルチャ固有の桁区切り記号。

.

カルチャ固有の小数点記号。

fractional-digits

0 から 9 までの一連の数字。

s パラメーターは、NumberStyles.Number スタイルを使用して解釈されます。つまり、空白文字と桁区切り記号は使用できますが、通貨記号は使用できません。s で使用できる要素 (通貨記号、桁区切り記号、空白文字など) を明示的に定義するには、Decimal.Parse(String, NumberStyles, IFormatProvider) メソッドを使用します。

provider パラメーターは、NumberFormatInfo オブジェクトや CultureInfo オブジェクトなどの、IFormatProvider の実装です。provider パラメーターは、解析で使用されるカルチャ固有の情報を提供します。providernull の場合は、スレッドの現在のカルチャが使用されます。

Decimal オブジェクトの精度は 29 桁です。s が表す数値が 29 桁以上であるが、小数部を含んでおり、MaxValueMinValue の範囲内に含まれる場合、その数値は切り捨てられるのではなく、29 桁の近似値に丸められます。

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

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

表示:
© 2014 Microsoft