정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

Single.CompareTo 메서드 (Single)

2013-12-13

이 인스턴스를 지정된 단정밀도 부동 소수점 숫자와 비교하고 이 인스턴스의 값이 지정된 단정밀도 부동 소수점 숫자 값보다 큰지, 작은지 또는 같은지를 나타내는 정수를 반환합니다.

Namespace:  System
어셈블리:  mscorlib(mscorlib.dll)

public int CompareTo(
	float value
)

매개 변수

value
형식: System.Single
비교할 단정밀도 부동 소수점 숫자입니다.

반환 값

형식: System.Int32
이 인스턴스와 value의 상대 값을 나타내는 부호 있는 숫자입니다.

반환 값

설명

0보다 작음

이 인스턴스는 value보다 작습니다.

-또는-

이 인스턴스는 Not-a-Number(NaN)이고 value는 숫자입니다.

0

이 인스턴스는 value와 같습니다.

-또는-

이 인스턴스와 value가 모두 Not-a-Number(NaN), PositiveInfinity 또는 NegativeInfinity입니다.

0보다 큼

이 인스턴스는 value보다 큽니다.

-또는-

이 인스턴스는 숫자이고 value는 Not-a-Number(NaN)입니다.

Implements

IComparable<T>.CompareTo(T)

이 메서드는 System.IComparable<T> 인터페이스를 구현하며, value 매개 변수를 개체로 변환할 필요가 없기 때문에 Single.CompareTo 메서드보다 조금 더 나은 성능을 제공합니다.

값이 NaN인 개체가 값이 NaN(자신인 경우 포함)인 다른 개체와 같지 않은 경우에도 IComparable<T> 인터페이스는 A.CompareTo(A)가 0을 반환하도록 요구합니다.

확대 변환

프로그래밍 언어에 따라 매개 변수 형식의 비트 수가 인스턴스 형식보다 적은 경우 CompareTo 메서드를 코딩할 수 있습니다. 이것은 일부 프로그래밍 언어에서 매개 변수를 인스턴스와 동일한 비트 수의 형식으로 표현하는 암시적 확대 변환을 수행하기 때문에 가능합니다.

예를 들어, 인스턴스 형식이 Single이고 매개 변수 형식이 Int32라고 가정합니다. Microsoft C# 컴파일러에서는 매개 변수의 값을 Single 개체로 나타내는 명령을 생성한 다음 인스턴스의 값과 매개 변수 확대 표현의 값을 비교하는 Single.CompareTo(Single) 메서드를 생성합니다.

해당 프로그래밍 언어의 설명서를 참조하여 컴파일러에서 숫자 형식에 대해 암시적으로 확대 변환을 수행하는지 확인하세요.

비교 시 정밀도

문서화된 정밀도를 초과하는 부동 소수점 수의 정밀도는 구현과 .NET Framework의 버전에 따라 다릅니다. 따라서 수의 내부 표현에 대한 정밀도가 변경될 수 있으므로 특정한 두 수의 비교는 .NET Framework 버전 간에 변경될 수 있습니다.

다음 코드 예제에서는 여러 값 및 참조 형식에 대한 CompareTo 메서드의 제네릭 버전과 제네릭이 아닌 버전을 보여 줍니다.


// This example demonstrates the generic and non-generic versions of the 
// CompareTo method for several base types.
// The non-generic version takes a parameter of type Object, while the generic
// version takes a type-specific parameter, such as Boolean, Int32, or Double.

using System;

class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      string nl = "\n";
      string msg = "{0}The following is the result of using the generic and non-generic{0}" +
                      "versions of the CompareTo method for several base types:{0}";

      DateTime now = DateTime.Now;
      // Time span = 11 days, 22 hours, 33 minutes, 44 seconds
      TimeSpan tsX = new TimeSpan(11, 22, 33, 44);
      // Version = 1.2.333.4
      Version versX = new Version("1.2.333.4");
      // Guid = CA761232-ED42-11CE-BACD-00AA0057B223
      Guid guidX = new Guid("{CA761232-ED42-11CE-BACD-00AA0057B223}");

      Boolean a1 = true, a2 = true;
      Byte b1 = 1, b2 = 1;
      Int16 c1 = -2, c2 = 2;
      Int32 d1 = 3, d2 = 3;
      Int64 e1 = 4, e2 = -4;
      Decimal f1 = -5.5m, f2 = 5.5m;
      Single g1 = 6.6f, g2 = 6.6f;
      Double h1 = 7.7d, h2 = -7.7d;
      Char i1 = 'A', i2 = 'A';
      String j1 = "abc", j2 = "abc";
      DateTime k1 = now, k2 = now;
      TimeSpan l1 = tsX, l2 = tsX;
      Version m1 = versX, m2 = new Version("2.0");
      Guid n1 = guidX, n2 = guidX;

      // The following types are not CLS-compliant.
      SByte w1 = 8, w2 = 8;
      UInt16 x1 = 9, x2 = 9;
      UInt32 y1 = 10, y2 = 10;
      UInt64 z1 = 11, z2 = 11;
      //
      outputBlock.Text += String.Format(msg, nl) + "\n";
      try
      {
         // The second and third Show method call parameters are automatically boxed because
         // the second and third Show method declaration arguments expect type Object.

         Show(outputBlock, "Boolean:  ", a1, a2, a1.CompareTo(a2), a1.CompareTo((Object)a2));
         Show(outputBlock, "Byte:     ", b1, b2, b1.CompareTo(b2), b1.CompareTo((Object)b2));
         Show(outputBlock, "Int16:    ", c1, c2, c1.CompareTo(c2), c1.CompareTo((Object)c2));
         Show(outputBlock, "Int32:    ", d1, d2, d1.CompareTo(d2), d1.CompareTo((Object)d2));
         Show(outputBlock, "Int64:    ", e1, e2, e1.CompareTo(e2), e1.CompareTo((Object)e2));
         Show(outputBlock, "Decimal:  ", f1, f2, f1.CompareTo(f2), f1.CompareTo((Object)f2));
         Show(outputBlock, "Single:   ", g1, g2, g1.CompareTo(g2), g1.CompareTo((Object)g2));
         Show(outputBlock, "Double:   ", h1, h2, h1.CompareTo(h2), h1.CompareTo((Object)h2));
         Show(outputBlock, "Char:     ", i1, i2, i1.CompareTo(i2), i1.CompareTo((Object)i2));
         Show(outputBlock, "String:   ", j1, j2, j1.CompareTo(j2), j1.CompareTo((Object)j2));
         Show(outputBlock, "DateTime: ", k1, k2, k1.CompareTo(k2), k1.CompareTo((Object)k2));
         Show(outputBlock, "TimeSpan: ", l1, l2, l1.CompareTo(l2), l1.CompareTo((Object)l2));
         Show(outputBlock, "Version:  ", m1, m2, m1.CompareTo(m2), m1.CompareTo((Object)m2));
         Show(outputBlock, "Guid:     ", n1, n2, n1.CompareTo(n2), n1.CompareTo((Object)n2));
         //
         outputBlock.Text += String.Format("{0}The following types are not CLS-compliant:", nl) + "\n";
         Show(outputBlock, "SByte:    ", w1, w2, w1.CompareTo(w2), w1.CompareTo((Object)w2));
         Show(outputBlock, "UInt16:   ", x1, x2, x1.CompareTo(x2), x1.CompareTo((Object)x2));
         Show(outputBlock, "UInt32:   ", y1, y2, y1.CompareTo(y2), y1.CompareTo((Object)y2));
         Show(outputBlock, "UInt64:   ", z1, z2, z1.CompareTo(z2), z1.CompareTo((Object)z2));
      }
      catch (Exception e)
      {
         outputBlock.Text += e + "\n";
      }
   }

   public static void Show(System.Windows.Controls.TextBlock outputBlock, string caption, Object var1, Object var2,
                           int resultGeneric, int resultNonGeneric)
   {
      string relation;

      outputBlock.Text += caption;
      if (resultGeneric == resultNonGeneric)
      {
         if (resultGeneric < 0) relation = "less than";
         else if (resultGeneric > 0) relation = "greater than";
         else relation = "equal to";
         outputBlock.Text += String.Format("{0} is {1} {2}", var1, relation, var2) + "\n";
      }

  // The following condition will never occur because the generic and non-generic
      // CompareTo methods are equivalent.

      else
      {
         outputBlock.Text += String.Format("Generic CompareTo = {0}; non-generic CompareTo = {1}",
                            resultGeneric, resultNonGeneric) + "\n";
      }
   }
}
/*
This example produces the following results:

The following is the result of using the generic and non-generic versions of the
CompareTo method for several base types:

Boolean:  True is equal to True
Byte:     1 is equal to 1
Int16:    -2 is less than 2
Int32:    3 is equal to 3
Int64:    4 is greater than -4
Decimal:  -5.5 is less than 5.5
Single:   6.6 is equal to 6.6
Double:   7.7 is greater than -7.7
Char:     A is equal to A
String:   abc is equal to abc
DateTime: 12/1/2003 5:37:46 PM is equal to 12/1/2003 5:37:46 PM
TimeSpan: 11.22:33:44 is equal to 11.22:33:44
Version:  1.2.333.4 is less than 2.0
Guid:     ca761232-ed42-11ce-bacd-00aa0057b223 is equal to ca761232-ed42-11ce-bacd-00
aa0057b223

The following types are not CLS-compliant:
SByte:    8 is equal to 8
UInt16:   9 is equal to 9
UInt32:   10 is equal to 10
UInt64:   11 is equal to 11
*/


Windows Phone OS

지원되는 버전: 8.0, 7.1, 7.0

Windows Phone

표시: