Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Método Double.CompareTo (Object)

 

Publicado: octubre de 2016

Compara esta instancia con un objeto especificado y devuelve un entero que indica si el valor de esta instancia es mayor, igual o menor que el valor del objeto especificado.

Espacio de nombres:   System
Ensamblado:  mscorlib (en mscorlib.dll)

public int CompareTo(
	object value
)

Parámetros

value
Type: System.Object

Objeto que se va a comparar o null.

Valor devuelto

Type: System.Int32

Número con signo que indica los valores relativos de esta instancia y value.

Valor

Descripción

Un entero negativo

Esta instancia es menor que value.

O bien

Esta instancia no es un número (NaN) y value es un número.

Cero

Esta instancia es igual a value.

O bien

Esta instancia y value son Double.NaN, PositiveInfinity, oNegativeInfinity

Un entero positivo.

Esta instancia es mayor que value.

O bien

Esta instancia es un número y value no es un número (NaN).

O bien

El valor de value es null.

Exception Condition
ArgumentException

value no es un Double.

El value parámetro debe ser null o una instancia de Double; en caso contrario, se produce una excepción. Cualquier instancia de Double, independientemente de su valor, se considera mayor que null.

Los valores deben ser idénticos para considerarse iguales. Especialmente cuando los valores de punto flotante dependen de varias operaciones matemáticas, es común para perder precisión y para los valores que son prácticamente idénticas excepto sus dígitos menos significativos. Por este motivo, el valor devuelto de la CompareTo método a veces puede parecer sorprendente. Por ejemplo, la multiplicación por un valor determinado seguido de división por el mismo valor debe generar el valor original. En el ejemplo siguiente, sin embargo, el valor calculado resulta para ser mayor que el valor original. Mostrar todos los dígitos significativos de los dos valores con la "R" cadena de formato numérico estándar indica que el valor calculado difiere del valor original en sus dígitos menos significativos. Para obtener información sobre cómo administrar estas comparaciones, vea la sección Comentarios de la Equals(Double) método.

using System;

public class Example
{
   public static void Main()
   {
       double value1 = 6.185;
       object value2 = value1 * .1 / .1;
       Console.WriteLine("Comparing {0} and {1}: {2}\n",
                         value1, value2, value1.CompareTo(value2));
       Console.WriteLine("Comparing {0:R} and {1:R}: {2}",
                         value1, value2, value1.CompareTo(value2));
   }
}
// The example displays the following output:
//       Comparing 6.185 and 6.185: -1
//       
//       Comparing 6.185 and 6.1850000000000005: -1

Este método se implementa para admitir el IComparable interfaz. Tenga en cuenta que, aunque un NaN no se considera igual que otro NaN (incluso él mismo), el IComparable interfaz requiere que A.CompareTo(A) devolver cero.

La precisión de números de punto flotante más allá de la precisión documentada es específica de la implementación y la versión de .NET Framework. Por lo tanto, una comparación de dos números concretos podría cambiar entre las versiones de .NET Framework, ya que podría cambiar la precisión de la representación interna de los números.

En el ejemplo de código siguiente se muestra el uso de CompareTo en el contexto de Double.

obj1 = (Double)450;

if (a.CompareTo(obj1) < 0) 
   Console.WriteLine("{0} is less than {1}.", a.ToString(), obj1.ToString());

if (a.CompareTo(obj1) > 0) 
   Console.WriteLine("{0} is greater than {1}.", a.ToString(), obj1.ToString());

if (a.CompareTo(obj1) == 0) 
   Console.WriteLine("{0} equals {1}.", a.ToString(), obj1.ToString());

.NET Framework
Disponible desde 1.1
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Volver al principio
Mostrar: