Saltar al contenido

Diferencia entre 2 números

Contamos con tu apoyo para compartir nuestras reseñas sobre las ciencias informáticas.

Solución:

Puedes hacerlo así

public decimal FindDifference(decimal nr1, decimal nr2)

  return Math.Abs(nr1 - nr2);

result = Math.Abs(value1 - value2);

Solo agrego esto, ya que nadie lo escribió aquí:

Si bien seguramente puedes usar

Math.Abs(number1 - number2);

que es la solución más fácil (y la respuesta aceptada), me pregunto si nadie escribió lo que realmente hace Abs. Aquí hay una solución que funciona Java, C, C # y cualquier otro lenguaje con sintaxis similar a C:

int result = number1 - number2;
if (result < 0) 
    result *= -1;

Es así de simple. También puedes escribirlo así:

int result = number1 > number2 ? number1 - number2 : number2 - number1;

El último podría ser incluso más rápido una vez compilado; ambos tienen un si y una resta, pero el primero tiene una multiplicación en algunos casos, el último no. ¿Por qué solo en algunos casos? Algunas CPU tienen una operación de "signo de intercambio" y el compilador reconoce lo que *= -1 lo hace, simplemente intercambia el signo, por lo que en lugar de una multiplicación, emitirá una operación de intercambio de signo para las CPU que lo ofrecen y esta operación es tan rápida como puede ser una operación de CPU (generalmente un ciclo de reloj).

El primer ejemplo de código está haciendo lo que Abs está haciendo en la mayoría de las implementaciones para hacer uso del "signo de intercambio" donde se admite, el último será más rápido en CPU que no tienen "signo de intercambio" y donde las multiplicaciones son más caras que las adiciones (en CPU modernas, a menudo son igualmente rápidas).

Si guardas algún reparo o capacidad de renovar nuestro artículo te mencionamos escribir una explicación y con mucho placer lo leeremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *