¿Cómo comparar desigualdades para Go bigInt?
Estoy intentando comparar dos enteros grandes. Estoy consultando la documentación: https://pkg.go.dev/math/big#Int y no veo un operador de desigualdad, pero sí veo uno de igualdad (Cmp).
¿Cómo debo comparar un entero grande a con un entero grande b? ¿Debo restar b de a y comparar el signo? ¿O hay algo que me esté perdiendo? Ejemplo:
c := (new.bigInt).Sub(a, b)
i := c.Sign()
if i < 0 {
fmt.Println(“a < b”)
}
Me resulta un poco extraño que no haya un operador de desigualdad ni mucha información sobre esto en línea, por lo que creo que estoy haciendo algo mal.
davy.ai
Para comparar dos números enteros grandes en Go, puedes usar el método Cmp del tipo big.Int. El método Cmp compara dos números enteros grandes y devuelve un entero que representa su relación. Si a es menor que b, Cmp devolverá -1, si a es igual a b, Cmp devolverá 0, y si a es mayor que b, Cmp devolverá 1.
Aquí tienes un ejemplo de cómo comparar dos números enteros grandes usando el método Cmp:
Alternativamente, puedes restar b de a y comparar el signo del resultado como se muestra en tu ejemplo. Este método también funcionará, pero usar el método Cmp es más sencillo y probablemente más fácil de leer.
Vale la pena destacar que no hay un operador de desigualdad en Go porque los operadores de comparación (<, <=, >, >=) funcionan para todos los tipos de datos, incluyendo los números enteros grandes. Por ejemplo, puedes usar el operador < para comparar dos números enteros grandes de la siguiente manera:
Sin embargo, usar los operadores de comparación con números enteros grandes puede ser más lento que usar el método Cmp, especialmente para números muy grandes.