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

Double 構造体

2013/12/12

倍精度浮動小数点数を表します。

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

public struct Double : IComparable, IComparable<double>, 
	IConvertible, IEquatable<double>, IFormattable

Double 型で公開されるメンバーは以下のとおりです。

  名前説明
パブリック メソッドCompareTo(Double)このインスタンスと指定した倍精度浮動小数点数を比較し、このインスタンスの値が指定した倍精度浮動小数点数の値よりも小さいか、同じか、または大きいかを示す整数を返します。
パブリック メソッドCompareTo(Object)このインスタンスと指定したオブジェクトを比較し、このインスタンスの値が指定したオブジェクトの値よりも小さいか、同じか、または大きいかを示す整数を返します。
パブリック メソッドEquals(Double)このインスタンスと指定した Double オブジェクトが同じ値を表しているかどうかを示す値を返します。
パブリック メソッドEquals(Object)指定されたオブジェクトとこのインスタンスが等しいかどうかを示す値を返します。 (ValueType.Equals(Object) をオーバーライドします。)
プロテクト メソッドFinalizeObject がガベージ コレクションで再利用される前に、Object がリソースを解放して他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。)
パブリック メソッドGetHashCodeこのインスタンスのハッシュ コードを返します。 (ValueType.GetHashCode() をオーバーライドします。)
パブリック メソッドGetType現在のインスタンスの Type を取得します。 (Object から継承されます。)
パブリック メソッドGetTypeCodeDouble 値型の TypeCode を返します。
パブリック メソッド静的メンバーIsInfinity指定した数値が負または正の無限大と評価されるかどうかを示す値を返します。
パブリック メソッド静的メンバーIsNaN指定した数値が非数 (NaN) である値と評価されるかどうかを示す値を返します。
パブリック メソッド静的メンバーIsNegativeInfinity指定された数値が負の無限大に評価されるかどうかを示す値を返します。
パブリック メソッド静的メンバーIsPositiveInfinity指定した数値が正の無限大と評価されるかどうかを示す値を返します。
プロテクト メソッドMemberwiseClone現在の Object の簡易コピーを作成します。 (Object から継承されます。)
パブリック メソッド静的メンバーParse(String)数値の文字列形式を、等価の倍精度浮動小数点数に変換します。
パブリック メソッド静的メンバーParse(String, NumberStyles)数値の指定したスタイルでの文字列形式を、それと等価な倍精度浮動小数点数に変換します。
パブリック メソッド静的メンバーParse(String, IFormatProvider)指定したカルチャに固有の書式による数値の文字列形式を、それと等価な倍精度浮動小数点数に変換します。
パブリック メソッド静的メンバーParse(String, NumberStyles, IFormatProvider)指定したスタイルおよびカルチャ固有の書式での数値の文字列形式を、等価の倍精度浮動小数点数に変換します。
パブリック メソッドToString()このインスタンスの数値を、それと等価の文字列形式に変換します。 (ValueType.ToString() をオーバーライドします。)
パブリック メソッドToString(IFormatProvider)指定されたカルチャ固有の書式情報を使用して、このインスタンスの数値を、それと等価の文字列形式に変換します。
パブリック メソッドToString(String)指定された書式を使用して、このインスタンスの数値を、それと等価の文字列形式に変換します。
パブリック メソッドToString(String, IFormatProvider)指定された書式およびカルチャ固有の書式情報を使用して、このインスタンスの数値を、それと等価の文字列形式に変換します。
パブリック メソッド静的メンバーTryParse(String, Double)数値の文字列形式を、等価の倍精度浮動小数点数に変換します。戻り値は、変換が成功したか失敗したかを示します。
パブリック メソッド静的メンバーTryParse(String, NumberStyles, IFormatProvider, Double)指定したスタイルおよびカルチャ固有の書式での数値の文字列形式を、等価の倍精度浮動小数点数に変換します。戻り値は、変換が成功したか失敗したかを示します。
このページのトップへ

  名前説明
パブリック演算子静的メンバーEquality指定した 2 つの Double 値が等しいかどうかを示す値を返します。
パブリック演算子静的メンバーGreaterThan指定した Double 値が、指定したもう 1 つの Double 値より大きいかどうかを示す値を返します。
パブリック演算子静的メンバーGreaterThanOrEqual指定した Double 値が、指定したもう 1 つの Double 値以上かどうかを示す値を返します。
パブリック演算子静的メンバーInequality指定した 2 つの Double 値が等しくないかどうかを示す値を返します。
パブリック演算子静的メンバーLessThan指定した Double 値が、指定したもう 1 つの Double 値より小さいかどうかを示す値を返します。
パブリック演算子静的メンバーLessThanOrEqual指定した Double 値が、指定したもう 1 つの Double 値以下かどうかを示す値を返します。
このページのトップへ

  名前説明
パブリック フィールド静的メンバーEpsilon0 より大きい最小の正の Double を表します。このフィールドは定数です。
パブリック フィールド静的メンバーMaxValueDouble の最大有効値を表します。このフィールドは定数です。
パブリック フィールド静的メンバーMinValueDouble の最小有効値を表します。このフィールドは定数です。
パブリック フィールド静的メンバーNaN非数 (NaN) の値を表します。このフィールドは定数です。
パブリック フィールド静的メンバーNegativeInfinity負の無限大を表します。このフィールドは定数です。
パブリック フィールド静的メンバーPositiveInfinity正の無限大を表します。このフィールドは定数です。
このページのトップへ

  名前説明
明示的なインターフェイスの実装プライベート メソッドIConvertible.ToBooleanインフラストラクチャ。 このメンバーの説明については、IConvertible.ToBoolean のトピックを参照してください。
明示的なインターフェイスの実装プライベート メソッドIConvertible.ToByteインフラストラクチャ。 このメンバーの説明については、IConvertible.ToByte のトピックを参照してください。
明示的なインターフェイスの実装プライベート メソッドIConvertible.ToCharインフラストラクチャ。 この変換はサポートされません。このメソッドを使用しようとすると、InvalidCastException がスローされます。
明示的なインターフェイスの実装プライベート メソッドIConvertible.ToDateTimeインフラストラクチャ。 この変換はサポートされません。このメソッドを使用しようとすると、InvalidCastException がスローされます
明示的なインターフェイスの実装プライベート メソッドIConvertible.ToDecimalインフラストラクチャ。 このメンバーの説明については、IConvertible.ToDecimal のトピックを参照してください。
明示的なインターフェイスの実装プライベート メソッドIConvertible.ToDoubleインフラストラクチャ。 このメンバーの説明については、IConvertible.ToDouble のトピックを参照してください。
明示的なインターフェイスの実装プライベート メソッドIConvertible.ToInt16インフラストラクチャ。 このメンバーの説明については、IConvertible.ToInt16 のトピックを参照してください。
明示的なインターフェイスの実装プライベート メソッドIConvertible.ToInt32インフラストラクチャ。 このメンバーの説明については、IConvertible.ToInt32 のトピックを参照してください。
明示的なインターフェイスの実装プライベート メソッドIConvertible.ToInt64インフラストラクチャ。 このメンバーの説明については、IConvertible.ToInt64 のトピックを参照してください。
明示的なインターフェイスの実装プライベート メソッドIConvertible.ToSByteインフラストラクチャ。 このメンバーの説明については、IConvertible.ToSByte のトピックを参照してください。
明示的なインターフェイスの実装プライベート メソッドIConvertible.ToSingleインフラストラクチャ。 このメンバーの説明については、IConvertible.ToSingle のトピックを参照してください。
明示的なインターフェイスの実装プライベート メソッドIConvertible.ToTypeインフラストラクチャ。 このメンバーの説明については、IConvertible.ToType のトピックを参照してください。
明示的なインターフェイスの実装プライベート メソッドIConvertible.ToUInt16インフラストラクチャ。 このメンバーの説明については、IConvertible.ToUInt16 のトピックを参照してください。
明示的なインターフェイスの実装プライベート メソッドIConvertible.ToUInt32インフラストラクチャ。 このメンバーの説明については、IConvertible.ToUInt32 のトピックを参照してください。
明示的なインターフェイスの実装プライベート メソッドIConvertible.ToUInt64インフラストラクチャ。 このメンバーの説明については、IConvertible.ToUInt64 のトピックを参照してください。
このページのトップへ

Double 値型は、-1.79769313486232e308 から +1.79769313486232e308 までの倍精度 64 ビット数値、正の 0 または負の 0、PositiveInfinityNegativeInfinity、および非数 (NaN) を表します。

Double は、2 進の浮動小数点演算に関する IEC 60559:1989 (IEEE 754) 規格に準拠しています。

Double は、この型の複数のインスタンスを比較したり、インスタンスの値を文字列形式に変換したり、数値の文字列形式をこの型のインスタンスに変換するためのメソッドを提供します。書式指定コードで値型の文字列形式を制御する方法については、「[0d1364da-5b30-4d42-8e6b-03378343343f]」、「[580e57eb-ac47-4ffd-bccd-3a1637c2f467]」、および「[6f74fd32-6c6b-48ed-8241-3c2b86dea5f4]」を参照してください。

浮動小数点数の使用

二項演算を実行するときに、一方のオペランドが Double である場合は、もう一方のオペランドは整数型または浮動小数点型 (Double または Single) であることが必要です。もう一方のオペランドが Double でない場合は、二項演算を実行する前に Double に変換され、この演算は少なくとも Double の範囲および精度を使用して実行されます。演算結果が数値である場合、結果の型は Double になります。

代入演算子を含む浮動小数点演算子は、例外をスローしません。その代わり、例外状況での浮動小数点演算の結果は、次に説明するように 0、無限大、または NaN になります。

  • 浮動小数点演算の結果が変換先の形式に対して小さすぎる場合、演算結果は 0 になります。

  • 浮動小数点演算の結果の絶対値が変換先形式に対して大きすぎる場合、演算結果は符号に応じて PositiveInfinity または NegativeInfinity になります。

  • 浮動小数点演算が無効な場合、演算結果は NaN になります。

  • 浮動小数点演算の一方または両方のオペランドが NaN の場合、演算結果は NaN になります。

浮動小数点値と精度の低下

浮動小数点数は 10 進数の概数を表すことができるだけであること、および、浮動小数点数の有効桁数によって数値が表す 10 進数の概数の精度が決定されることに注意してください。既定では、Double 値に含まれる有効桁数は 15 桁ですが、内部的には最大 17 桁が保持されています。浮動小数点数の桁数から、複数の結果が生成されます。

  • 特定の桁数において等しい 2 つの浮動小数点数が、最下位バイトが異なっているために、等価でないと評価される場合があります。

  • 浮動小数点数を使用する数値演算または比較演算において、10 進数が使用された場合は、浮動小数点数が表す概数の 10 進数が完全には一致しないために同じ結果が生成されないことがあります。

  • 浮動小数点数が使用されると、値がラウンドトリップされない場合があります。値がラウンドトリップされるというのは、演算で元の浮動小数点数が別の形式に変換され、逆の演算で変換された形式から浮動小数点数に戻されて、最終の浮動小数点数が元の浮動小数点数と等価である場合です。最下位の桁数が 1 つ以上失われるか、または変更された場合は、ラウンドトリップが失敗します。

また、Double 値を使用した算術演算および代入演算の結果はプラットフォームによって多少異なる場合がありますが、これは Double 型の精度の低下によるものです。

インターフェイスの実装

この型は、IComparableIComparable<T>IFormattable、および IConvertible の各インターフェイスを実装します。この型の明示的な IConvertible インターフェイス メンバーの実装の代わりに、Convert クラスを使用します。

Double 値と XAML 解析

Double 値を XAML 属性値として処理した場合、この値はコードまたはランタイム内での Double の定義によって暗黙的に指定される完全精度を保持しません。これは、ネイティブ コードが XAML 解析操作の一部として使用され、ユーザー インターフェイスに適用される数値が意図的に最適化されることが原因です。

また、XAML には基になるプロパティ型が Double であるいくつかのプロパティが含まれますが、予測される値は 0 ~ 1.0 の範囲内です。このことは、通常はそのプロパティのリファレンス ドキュメントに注記され、XAML 構文に注記されることもあります。このようなプロパティの例として、UIElement.Opacity が挙げられます。

Double の使用方法を次の例に示します。


// Temperature class stores the value as Double
// and delegates most of the functionality 
// to the Double implementation.
public class Temperature : IComparable, IFormattable
{
   // IComparable.CompareTo implementation.
   public int CompareTo(object obj)
   {
      if (obj == null) return 1;

      Temperature temp = obj as Temperature;
      if (temp != null) 
         return m_value.CompareTo(temp.m_value);
      else
         throw new ArgumentException("object is not a Temperature");
   }

   // IFormattable.ToString implementation.
   public string ToString(string format, IFormatProvider provider)
   {
      if (format != null)
      {
         if (format.Equals("F"))
         {
            return String.Format("{0}'F", this.Value.ToString());
         }
         if (format.Equals("C"))
         {
            return String.Format("{0}'C", this.Celsius.ToString());
         }
      }

      return m_value.ToString(format, provider);
   }

   // Parses the temperature from a string in form
   // [ws][sign]digits['F|'C][ws]
   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;
      }
   }
}


Windows Phone OS

サポート: 8.0, 7.1, 7.0

この型のすべてのメンバーはスレッド セーフです。インスタンスの状態を変更するように見えるメンバーは、実際には新しい値を使用して初期化された新しいインスタンスを返します。他の型と同じように、確実なスレッド セーフを実現するには、この型のインスタンスを含む共有変数の読み取りと書き込みをロックによって保護する必要があります。

注意注意:

この型のインスタンスのバイナリ表現は大きすぎて 1 回の分割不可能操作に割り当てられないため、このインスタンスを割り当てることはすべてのハードウェア プラットフォームでスレッド セーフではありません。

リファレンス

表示:
© 2014 Microsoft