Por ejemplo, ¿existe un operador para manejar esto?
float Result, Number1, Number2;
Number1 = 2;
Number2 = 2;
Result = Number1 (operator) Number2;
En el pasado, el ^
operador ha servido como operador exponencial en otros lenguajes, pero en C # es un operador inteligente.
¿Tengo que escribir un bucle o incluir otro espacio de nombres para manejar operaciones exponenciales? Si es así, ¿cómo manejo las operaciones exponenciales utilizando no enteros?
c#
operators
arithmetic-expressions
exponent
Charlie
fuente
fuente
**
como operador de exponenciación infijo.Respuestas:
El lenguaje C # no tiene un operador de energía . Sin embargo, .NET Framework ofrece el método Math.Pow :
Entonces su ejemplo se vería así:
fuente
Me topé con esta publicación buscando usar notación científica en mi código, usé
Pero luego descubrí que puedes hacer
Solo pensé que agregaría esto para cualquier persona en una situación similar en la que estaba.
fuente
Hay una publicación de blog en MSDN sobre por qué NO existe un operador exponente del equipo de C #.
Tu preguntaste:
Math.Pow admite parámetros dobles, por lo que no es necesario que escriba los suyos.
fuente
La falta de un operador exponencial para C # fue una gran molestia para nosotros cuando buscábamos un nuevo lenguaje para convertir nuestro software de cálculo del buen vb6.
Me alegro de haber elegido C #, pero todavía me molesta cuando escribo una ecuación compleja que incluye exponentes. El método Math.Pow () hace que las ecuaciones sean bastante difíciles de leer en la OMI.
Nuestra solución fue crear una clase especial de DoubleX donde anulamos el operador ^ (ver más abajo)
Esto funciona bastante bien siempre que declare al menos una de las variables como DoubleX:
o use un convertidor explícito en dobles estándar:
Sin embargo, un problema con este método es que el exponente se calcula en el orden incorrecto en comparación con otros operadores. Esto se puede evitar poniendo siempre un extra () alrededor de la operación, lo que nuevamente hace que sea un poco más difícil leer las ecuaciones:
¡Espero que esto pueda ser de ayuda para otros que usan muchas ecuaciones complejas en su código, y tal vez alguien tenga una idea de cómo mejorar este método ?! :-)
Clase DoubleX:
fuente
Me sorprende que nadie haya mencionado esto, pero para el caso simple (y probablemente más frecuente) de cuadratura, simplemente se multiplica por sí mismo.
fuente
Math.Pow
. Solo estaba ofreciendo una solución obvia para el caso más común.Math.Pow(Number1, 2)
Como nadie ha escrito aún una función para hacer esto con dos enteros, aquí hay una manera:
Alternativamente en VB.NET:
fuente
Una buena función de potencia sería
La función `Math.Pow` usa la función de potencia del procesador y es altamente más eficiente.
fuente
Por lo que vale, extraño el operador ^ al aumentar una potencia de 2 para definir una constante binaria. No se puede usar Math.Pow () allí, pero el desplazamiento de un int sin signo de 1 a la izquierda por el valor del exponente funciona. Cuando necesitaba definir una constante de (2 ^ 24) -1:
Recuerde que los tipos deben ser (uint) << (int).
fuente