2009-07-10 5 views
-3

Je voulais juste savoir s'il y a quelque chose de construit dans le cadre. Net où je peux facilement retourner le delta entre deux nombres? J'ai écrit du code qui fait ça mais ça ressemble à quelque chose qui devrait déjà être dans le cadre.C# fonction de trouver le delta de deux nombres

+1

Cette question permet-elle de déterminer si les flotteurs se situent dans une plage donnée? (sinon c'est plus ou moins un problème de soustraction ... – nos

+21

Soustraction ... palpeur difficile de l'addition – Michael

Répondre

60
delta = Math.Abs(a - b); 
+6

Wow ... un 24 * caractères * réponse net 385 rep (et en comptant) . Ce n'est pas un mauvais rapport. – Aaron

+2

lui a également accordé un insigne d'inversion. Seulement 207 d'entre eux ont déjà distribué! Agréable! – Alveoli

9

N'est-ce pas ce que fait l'opérateur moins? : p

+2

Pas exactement mais belle réponse anway ;-) – Dario

18

Je suis sous l'impression que "delta" est la différence entre deux nombres.

Jusqu'à ce que vous me dites différemment, je pense que ce que vous voulez est:

delta = Math.Abs(a - b); 
1

Quel est le delta de deux nombres? Delta a une certaine signification dans la théorie des ensembles et le calcul infinitésimal, mais cela ne se réfère pas aux nombres!

Si vous voulez calculer la différence entre deux nombres a et b, vous écrivez |a - b| qui est Math.Abs(a - b) en C#.

+1

Delta n'a pas une certaine signification dans le calcul infinitésimal, il est simplement un symbole couramment utilisé. – jason

+1

Jason, dans delta de calcul peut se référer à la fonction delta de Diracs et a donc une signification bien définie. Une définition différente qui est largement utilisée est le delta de Kroneckers. D'où Dario a raison, quand il demande une clarification.La question des PO est quelque peu ambiguë. – Accipitridae

15
public static int Delta(int a, int b) 
{ 
    int delta = 0; 
    if (a == b) 
    { 
    return 0; 
    } 
    else if (a < b) 
    { 
    while (a < b) 
    { 
     a++; 
     delta++; 
    } 
    return delta; 
    } 
    else 
    { 
    while (b < a) 
    { 
     b++; 
     delta++; 
    } 
    return delta; 
    } 
} 

: p

Oh boy, je l'espère pas (futur) employeur vient à travers cela et arrête la lecture de dégoût avant qu'il arrive à la fin de ce post ..

8
public static int Delta(int a, int b) 
{ 
    return a > 0? Delta(a-1, b-1) : a < 0 ? Delta(a+1, b+1) : b > 0 ? b : -b; 
} 

Je pense c'est encore mieux que l'implémentation @JulianR Delta :-p

Edit: Je ne savais pas que cela avait déjà été suggéré par @Robert Harvey, crédit à lui ;-)

+3

Oh, c'est beaucoup mieux. Récursion * et * opérateurs ternaires enchaînés! –

+0

Ouais, et ça marche même! XD Je pensais que j'aurais fait une erreur, mais étonnamment pas^_ ^ – fortran

1

J'ai décidé de réviser la réponse amusante de JulianR ci-dessus.

Le code est plus court, mais peut-être plus délicat:

public static int Delta(int a, int b) 
{ 
    int delta = 0; 
    while (a < b) 
    { 
    ++a; 
    ++delta; 
    } 
    while (b < a) 
    { 
    ++b; 
    ++delta; 
    } 
    return delta; 
} 

(pour la déficience humour .... c'est plus grave que la question bizarre qui a commencé le fil)

11

Le Version Linq (nécessite CLR 4.0).

(doigts fissures, la gorge efface)

var delta = (from t in Enumerable.Range(a, a).Zip(Enumerable.Range(b, b)) 
      select Math.Abs(t.Item1 - t.Item2)) 
      .First(); 
0
(r1+r2)/2 

Avarage entre deux nombres.

Questions connexes