Double 構造体
アセンブリ: mscorlib (mscorlib.dll 内)
構文
<SerializableAttribute> _ <ComVisibleAttribute(True)> _ Public Structure Double Implements IComparable, IFormattable, IConvertible, IComparable(Of Double), _ IEquatable(Of Double)
[SerializableAttribute] [ComVisibleAttribute(true)] public struct Double : IComparable, IFormattable, IConvertible, IComparable<double>, IEquatable<double>
[SerializableAttribute] [ComVisibleAttribute(true)] public value class Double : IComparable, IFormattable, IConvertible, IComparable<double>, IEquatable<double>
Double 値型は、-1.79769313486232e308 から +1.79769313486232e308 までの倍精度 64 ビット数値、正の 0 または負の 0、PositiveInfinity、NegativeInfinity、および非数 (NaN) を表します。
Double は、2 進の浮動小数点演算に関する IEC 60559:1989 (IEEE 754) 規格に準拠しています。
Double は、この型の複数のインスタンスを比較したり、インスタンスの値を文字列形式に変換したり、数値の文字列形式をこの型のインスタンスに変換するためのメソッドを提供します。書式指定コードで値型の文字列形式を制御する方法については、「書式設定の概要」、「標準の数値書式指定文字列」、および「カスタム数値書式指定文字列」を参照してください。
浮動小数点数の使用二項演算を実行するときに、一方のオペランドが Double である場合は、もう一方のオペランドは整数型または浮動小数点型 (Double または Single) であることが必要です。もう一方のオペランドが Double でない場合は、二項演算を実行する前に Double に変換され、この演算は少なくとも Double の範囲および精度を使用して実行されます。演算結果が数値である場合、結果の型は Double になります。
浮動小数点演算子および代入演算子は、例外をスローしません。その代わり、例外状況での浮動小数点演算の結果は、次に説明するように 0、無限大、または NaN になります。
浮動小数点数は 10 進数の概数を表すことができるだけであること、および、浮動小数点数の有効桁数によって数値が表す 10 進数の概数の精度が決定されることに注意してください。既定では、Double 値に含まれる有効桁数は 15 桁ですが、内部的には最大 17 桁が保持されています。浮動小数点数の桁数から、複数の結果が生成されます。
-
特定の桁数において等しい 2 つの浮動小数点数が、最下位バイトが異なっているために、等価でないと評価される場合があります。
-
浮動小数点数を使用する数値演算または比較演算において、10 進数が使用された場合は、浮動小数点数が表す概数の 10 進数が完全には一致しないために同じ結果が生成されないことがあります。
-
浮動小数点数が使用されると、値がラウンドトリップされない場合があります。値がラウンドトリップされるというのは、演算で元の浮動小数点数が別の形式に変換され、逆の演算で変換された形式から浮動小数点数に戻されて、最終の浮動小数点数が元の浮動小数点数と等価である場合です。最下位の桁数が 1 つ以上失われるか、または変更された場合は、ラウンドトリップが失敗します。
Double の使用方法については、次のコード例を参照してください。
' Temperature class stores the value as Double ' and delegates most of the functionality ' to the Double implementation. Public Class Temperature Implements IComparable, IFormattable Public Overloads Function CompareTo(ByVal obj As Object) As Integer _ Implements IComparable.CompareTo If TypeOf obj Is Temperature Then Dim temp As Temperature = CType(obj, Temperature) Return m_value.CompareTo(temp.m_value) End If Throw New ArgumentException("object is not a Temperature") End Function Public Overloads Function ToString(ByVal format As String, ByVal provider As IFormatProvider) As String _ Implements IFormattable.ToString If Not (format Is Nothing) Then If format.Equals("F") Then Return [String].Format("{0}'F", Me.Value.ToString()) End If If format.Equals("C") Then Return [String].Format("{0}'C", Me.Celsius.ToString()) End If End If Return m_value.ToString(format, provider) End Function ' 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
/// <summary> /// Temperature class stores the value as Double /// and delegates most of the functionality /// to the Double implementation. /// </summary> public class Temperature : IComparable, IFormattable { /// <summary> /// IComparable.CompareTo implementation. /// </summary> public int CompareTo(object obj) { if(obj is Temperature) { Temperature temp = (Temperature) obj; return m_value.CompareTo(temp.m_value); } throw new ArgumentException("object is not a Temperature"); } /// <summary> /// IFormattable.ToString implementation. /// </summary> 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); } /// <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; } } }
/// <summary> /// Temperature class stores the value as Double /// and delegates most of the functionality /// to the Double implementation. /// </summary> public ref class Temperature: public IComparable, public IFormattable { /// <summary> /// IComparable.CompareTo implementation. /// </summary> public: virtual int CompareTo( Object^ obj ) { if ( dynamic_cast<Temperature^>(obj) ) { Temperature^ temp = (Temperature^)(obj); return m_value.CompareTo( temp->m_value ); } throw gcnew ArgumentException( "object is not a Temperature" ); } /// <summary> /// IFormattable.ToString implementation. /// </summary> virtual String^ ToString( String^ format, IFormatProvider^ provider ) { if ( format != nullptr ) { 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 ); } /// <summary> /// Parses the temperature from a string in form /// [ws][sign]digits['F|'C][ws] /// </summary> static Temperature^ Parse( String^ s, NumberStyles styles, IFormatProvider^ provider ) { Temperature^ temp = gcnew Temperature; if ( s->TrimEnd( 0 )->EndsWith( "'F" ) ) { temp->Value = Double::Parse( s->Remove( s->LastIndexOf( '\'' ), 2 ), styles, provider ); } else if ( s->TrimEnd( 0 )->EndsWith( "'C" ) ) { temp->Celsius = Double::Parse( s->Remove( s->LastIndexOf( '\'' ), 2 ), styles, provider ); } else { temp->Value = Double::Parse( s, styles, provider ); } return temp; } protected: // The value holder double m_value; public: property double Value { double get() { return m_value; } void set( double value ) { m_value = value; } } property double Celsius { double get() { return (m_value - 32.0) / 1.8; } void set( double value ) { m_value = 1.8 * value + 32.0; } } };
/// <summary> /// Temperature class stores the value as Double /// and delegates most of the functionality /// to the Double implementation. /// </summary> public class Temperature implements IComparable, IFormattable { /// <summary> /// IComparable.CompareTo implementation. /// </summary> public function CompareTo(obj) : int{ if(obj.GetType() == Temperature) { var temp : Temperature = Temperature(obj); return m_value.CompareTo(temp.m_value); } throw new ArgumentException("object is not a Temperature"); } /// <summary> /// IFormattable.ToString implementation. /// </summary> public function ToString(format : String, provider : IFormatProvider) : String { 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); } /// <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 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
参照
Weblioに収録されているすべての辞書からDouble 構造体を検索する場合は、下記のリンクをクリックしてください。
全ての辞書からDouble 構造体 を検索
- Double 構造体のページへのリンク