Par exemple, existe-t-il un opérateur pour gérer cela?
float Result, Number1, Number2;
Number1 = 2;
Number2 = 2;
Result = Number1 (operator) Number2;
Dans le passé, l' ^
opérateur a servi d'opérateur exponentiel dans d'autres langues, mais en C #, c'est un opérateur bit à bit.
Dois-je écrire une boucle ou inclure un autre espace de noms pour gérer les opérations exponentielles? Si oui, comment gérer les opérations exponentielles à l'aide de non-entiers?
**
comme opérateur d'exponentiation d'infixe.Réponses:
Le langage C # n'a pas d'opérateur de puissance . Cependant, le .NET Framework propose la méthode Math.Pow :
Donc, votre exemple ressemblerait à ceci:
la source
Je suis tombé sur ce post en cherchant à utiliser la notation scientifique dans mon code, j'ai utilisé
Mais après j'ai découvert que tu pouvais faire
Je pensais simplement que j'ajouterais cela à toute personne dans une situation similaire à laquelle j'étais.
la source
Il existe un article de blog sur MSDN expliquant pourquoi un opérateur exposant N'existe PAS de l'équipe C #.
Tu as demandé:
Math.Pow prend en charge les paramètres doubles, vous n'avez donc pas besoin d'écrire les vôtres.
la source
L'absence d'un opérateur exponentiel pour C # était une grande gêne pour nous lorsque nous recherchions un nouveau langage pour convertir notre logiciel de calcul à partir du bon vieux vb6.
Je suis content que nous ayons choisi C # mais cela m'ennuie toujours quand j'écris une équation complexe incluant des exposants. La méthode Math.Pow () rend les équations assez difficiles à lire IMO.
Notre solution a été de créer une classe DoubleX spéciale où nous remplaçons l'opérateur ^ (voir ci-dessous)
Cela fonctionne assez bien tant que vous déclarez au moins une des variables comme DoubleX:
ou utilisez un convertisseur explicite sur les doubles standard:
Un problème avec cette méthode est cependant que l'exposant est calculé dans le mauvais ordre par rapport aux autres opérateurs. Cela peut être évité en mettant toujours un extra () autour de l'opération, ce qui rend encore plus difficile la lecture des équations:
J'espère que cela peut être utile à d'autres qui utilisent beaucoup d'équations complexes dans leur code, et peut-être que quelqu'un a même une idée de la façon d'améliorer cette méthode?! :-)
Classe DoubleX:
la source
Je suis surpris que personne n'ait mentionné cela, mais pour le cas simple (et probablement le plus rencontré) de la quadrature, vous multipliez simplement par lui-même.
la source
Math.Pow
. Je proposais simplement une solution évidente au cas le plus courant.Math.Pow(Number1, 2)
Étant donné que personne n'a encore écrit de fonction pour ce faire avec deux entiers, voici une façon:
Alternativement dans VB.NET:
la source
Une bonne fonction de puissance serait
La fonction `Math.Pow` utilise la fonction de puissance du processeur et est très plus efficace.
la source
Pour ce que ça vaut, je manque l'opérateur ^ lors de l'augmentation d'une puissance de 2 pour définir une constante binaire. Impossible d'utiliser Math.Pow () là-bas, mais le décalage d'un entier non signé de 1 vers la gauche par la valeur de l'exposant fonctionne. Quand j'avais besoin de définir une constante de (2 ^ 24) -1:
N'oubliez pas que les types doivent être (uint) << (int).
la source