次の方法で共有


Double.Parse メソッド (String, NumberStyles, IFormatProvider)

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

Overloads Public Shared Function Parse( _
   ByVal s As String, _   ByVal style As NumberStyles, _   ByVal provider As IFormatProvider _) As Double
[C#]
public static double Parse(strings,NumberStylesstyle,IFormatProviderprovider);
[C++]
public: static double Parse(String* s,NumberStylesstyle,IFormatProvider* provider);
[JScript]
public static function Parse(
   s : String,style : NumberStyles,provider : IFormatProvider) : double;

パラメータ

  • s
    変換する数値を格納する文字列。
  • style
    s の許容形式を示す、1 つ以上の NumberStyles 定数の組み合わせ。
  • provider
    s に関するカルチャに固有の書式情報を提供する IFormatProvider

戻り値

s で指定した数値または記号に等しい倍精度浮動小数点数。

例外

例外の種類 条件
ArgumentNullException s が null 参照 (Visual Basic では Nothing) です。
FormatException s が数値ではありません。
ArgumentException style が、 NumberStyles 列挙体からのビット フラグの組み合わせではありません。
OverflowException sMinValue 未満の数値か、 MaxValue より大きい数値を表しています。

解説

s パラメータには、 PositiveInfinitySymbolNegativeInfinitySymbolNaNSymbol 、または次の書式の文字列を格納できます。

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

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

  • ws
    一連の空白文字。
  • sign
    負の記号または正の記号。
  • integral-digits
    数値の整数部分を指定する一連の数字。一連の整数の桁は、区切り記号によって区切られる場合があります。たとえば、カルチャによっては、桁区切り文字としてコンマ (,) が使用されます。小数の桁が存在する場合は、整数の桁はなくてもかまいません。
  • '.'
    カルチャに固有の小数点記号。
  • fractional-digits
    数値の小数部分を指定する一連の数字。
  • 'e'
    指数表記を示す大文字または小文字の 'e'。
  • exponential-digits
    指数部を指定する一連の数字。

s の例には、"100"、"-123,456,789"、"123.45e+6"、"+500"、"5e2"、"3.1416"、"600."、"-.123"、"-Infinity" などがあります。

Parse のこのバージョンでは、指定した NumberStyles と、指定した数値書式情報を使用します。 provider が null 参照 (Visual Basic では Nothing) の場合や、 NumberFormatInfo を取得できない場合は、現在のシステムのカルチャの書式情報が使用されます。

数値書式の詳細については、「 書式設定の概要 」のトピックを参照してください。

使用例

Parse を使用して、パラメータとして StringIFormatProvider 、および NumberStyles を受け取る方法については、次のコード例を参照してください。

 
Public Class Temperature
    ' Parses the temperature from a string in form
    ' [ws][sign]digits['F|'C][ws]
    Public Shared Function Parse(ByVal s As String, ByVal styles As NumberStyles, ByVal provider As IFormatProvider) As Temperature
        Dim temp As New Temperature()

        If s.TrimEnd(Nothing).EndsWith("'F") Then
            temp.Value = Double.Parse(s.Remove(s.LastIndexOf("'"c), 2), styles, provider)
        Else
            If s.TrimEnd(Nothing).EndsWith("'C") Then
                temp.Celsius = Double.Parse(s.Remove(s.LastIndexOf("'"c), 2), styles, provider)
            Else
                temp.Value = Double.Parse(s, styles, provider)
            End If
        End If
        Return temp
    End Function

    ' The value holder
    Protected m_value As Double

    Public Property Value() As Double
        Get
            Return m_value
        End Get
        Set(ByVal Value As Double)
            m_value = Value
        End Set
    End Property

    Public Property Celsius() As Double
        Get
            Return (m_value - 32) / 1.8
        End Get
        Set(ByVal Value As Double)
            m_value = Value * 1.8 + 32
        End Set
    End Property
End Class

[C#] 
public class Temperature {
    /// <summary>
    /// Parses the temperature from a string in form
    /// [ws][sign]digits['F|'C][ws]
    /// </summary>
    public static Temperature Parse(string s, NumberStyles styles, IFormatProvider provider) {
        Temperature temp = new Temperature();

        if( s.TrimEnd(null).EndsWith("'F") ) {
            temp.Value = Double.Parse( s.Remove(s.LastIndexOf('\''), 2), styles, provider);
        }
        else if( s.TrimEnd(null).EndsWith("'C") ) {
            temp.Celsius = Double.Parse( s.Remove(s.LastIndexOf('\''), 2), styles, provider);
        }
        else {
            temp.Value = Double.Parse(s, styles, provider);
        }

        return temp;
    }

    // The value holder
    protected double m_value;

    public double Value {
        get {
            return m_value;
        }
        set {
            m_value = value;
        }
    }

    public double Celsius {
        get {
            return (m_value-32.0)/1.8;
        }
        set {
            m_value = 1.8*value+32.0;
        }
    }
}

[C++] 
public __gc class Temperature {
   /// <summary>
   /// Parses the temperature from a string in form
   /// [ws][sign]digits['F|'C][ws]
   /// </summary>
public:
   static Temperature* Parse(String* s, NumberStyles styles, IFormatProvider* provider) {
      Temperature* temp = new Temperature();

      if( s->TrimEnd(0)->EndsWith(S"'F") ) {
         temp->Value = Double::Parse( s->Remove(s->LastIndexOf('\''), 2), styles, provider);
      }
      else if( s->TrimEnd(0)->EndsWith(S"'C") ) {
         temp->Celsius = Double::Parse( s->Remove(s->LastIndexOf('\''), 2), styles, provider);
      }
      else {
         temp->Value = Double::Parse(s, styles, provider);
      }

      return temp;
   }

   // The value holder
protected:
   double m_value;

public:
   __property double get_Value() {
      return m_value;
   }
   __property void set_Value( double value ) {
      m_value = value;
   }

   __property double get_Celsius() {
      return (m_value-32.0)/1.8;
   }
   __property void set_Celsius( double value ) {
      m_value = 1.8*value+32.0;
   }

};

[JScript] 
public class Temperature {
    /// <summary>
    /// Parses the temperature from a string in form
    /// [ws][sign]digits['F|'C][ws]
    /// </summary>
    public static function Parse(s : String, styles : NumberStyles, provider : IFormatProvider) : Temperature{
        var temp : Temperature = new Temperature();

        if( s.TrimEnd(null).EndsWith("'F") ) {
            temp.Value = Double.Parse( s.Remove(s.LastIndexOf('\''), 2), styles, provider);
        }
        else if( s.TrimEnd(null).EndsWith("'C") ) {
            temp.Celsius = Double.Parse( s.Remove(s.LastIndexOf('\''), 2), styles, provider);
        }
        else {
            temp.Value = Double.Parse(s, styles, provider);
        }

        return temp;
    }

    // The value holder
    protected var m_value : double;

    public function get Value() : double{
        return m_value;
    }
    
            public function set Value(value : double) {
        m_value = value;
    }

    public function get Celsius() : double {
        return (m_value-32.0)/1.8;
            }
            
            public function set Celsius(value : double) {
        m_value = 1.8*value+32.0;
    }
}

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard

参照

Double 構造体 | Double メンバ | System 名前空間 | Double.Parse オーバーロードの一覧 | 書式設定の概要 | ToString