Na przykład, czy istnieje operator, który sobie z tym poradzi?
float Result, Number1, Number2;
Number1 = 2;
Number2 = 2;
Result = Number1 (operator) Number2;
W przeszłości ^
operator pełnił funkcję operatora wykładniczego w innych językach, ale w języku C # jest operatorem nieco mądrzejszym.
Czy muszę pisać pętlę lub zawierać inną przestrzeń nazw do obsługi operacji wykładniczych? Jeśli tak, w jaki sposób obsługiwać operacje wykładnicze przy użyciu liczb całkowitych?
c#
operators
arithmetic-expressions
exponent
Charlie
źródło
źródło
**
jako operatora potęgowania potęgi.Odpowiedzi:
Język C # nie ma operatora mocy . Jednak .NET Framework oferuje metodę Math.Pow :
Twój przykład wyglądałby tak:
źródło
Natknąłem się na ten post, próbując użyć notacji naukowej w moim kodzie, użyłem
Ale potem odkryłem, że możesz to zrobić
Pomyślałem, że dodam to dla każdego w podobnej sytuacji, w jakiej byłem.
źródło
W witrynie MSDN znajduje się post na blogu o tym, dlaczego operator wykładnika NIE istnieje od zespołu C #.
Zapytałeś:
Math.Pow obsługuje podwójne parametry, więc nie musisz pisać własnych.
źródło
Brak operatora wykładniczego dla języka C # był dla nas dużą uciążliwością, gdy szukaliśmy nowego języka do konwersji naszego oprogramowania obliczeniowego z dobrej starej wersji vb6.
Cieszę się, że wybraliśmy C #, ale wciąż denerwuje mnie, gdy piszę złożone równanie, w tym wykładniki. Metoda Math.Pow () sprawia, że równania są dość trudne do odczytania przez IMO.
Naszym rozwiązaniem było stworzenie specjalnej klasy DoubleX, w której przesłonimy operator ^ (patrz poniżej)
Działa to dość dobrze, o ile deklarujesz przynajmniej jedną ze zmiennych jako DoubleX:
lub użyj jawnego konwertera na standardowe podwójne:
Jednym z problemów związanych z tą metodą jest to, że wykładnik obliczany jest w niewłaściwej kolejności w porównaniu do innych operatorów. Można tego uniknąć, zawsze umieszczając dodatkową () wokół operacji, co ponownie utrudnia odczytanie równań:
Mam nadzieję, że może to pomóc innym, którzy używają wielu złożonych równań w swoim kodzie, a może ktoś nawet ma pomysł, jak ulepszyć tę metodę ?! :-)
Klasa DoubleX:
źródło
Dziwię się, że nikt o tym nie wspominał, ale w przypadku prostego (i prawdopodobnie najczęściej spotykanego) przypadku kwadratu wystarczy pomnożyć sam.
źródło
Math.Pow
. Właśnie oferowałem oczywiste rozwiązanie najczęstszego przypadku.Math.Pow(Number1, 2)
Ponieważ nikt jeszcze nie napisał funkcji, aby to zrobić z dwiema liczbami całkowitymi, oto jeden sposób:
Alternatywnie w VB.NET:
źródło
Dobra byłaby funkcja mocy
Funkcja `Math.Pow` wykorzystuje funkcję zasilania procesora i jest znacznie bardziej wydajna.
źródło
Za to, co warto, tęsknię za operatorem ^ podczas podnoszenia potęgi 2 w celu zdefiniowania stałej binarnej. Nie można tam użyć Math.Pow (), ale działa przesunięcie liczby całkowitej bez znaku 1 w lewo o wartość wykładnika. Kiedy musiałem zdefiniować stałą (2 ^ 24) -1:
Pamiętaj, że typami muszą być (uint) << (int).
źródło