Misalnya, apakah ada operator untuk menangani ini?
float Result, Number1, Number2;
Number1 = 2;
Number2 = 2;
Result = Number1 (operator) Number2;
Di masa lalu ^
operator telah melayani sebagai operator eksponensial dalam bahasa lain, tetapi dalam C # itu adalah operator yang sedikit bijaksana.
Apakah saya harus menulis lingkaran atau menyertakan namespace lain untuk menangani operasi eksponensial? Jika demikian, bagaimana cara menangani operasi eksponensial menggunakan non-integer?
c#
operators
arithmetic-expressions
exponent
Charlie
sumber
sumber
**
sebagai operator eksponensial infix.Jawaban:
Bahasa C # tidak memiliki operator listrik . Namun, .NET Framework menawarkan metode Math.Pow :
Jadi contoh Anda akan terlihat seperti ini:
sumber
Saya tersandung pada posting ini yang ingin menggunakan notasi ilmiah dalam kode saya, saya menggunakan
Tapi setelah itu saya tahu Anda bisa melakukannya
Hanya berpikir saya akan menambahkan ini untuk siapa pun dalam situasi yang sama dengan saya.
sumber
Ada posting blog di MSDN tentang mengapa operator eksponen TIDAK ada dari tim C #.
Kamu bertanya:
Math.Pow mendukung parameter ganda sehingga Anda tidak perlu menulis sendiri.
sumber
Kurangnya operator eksponensial untuk C # adalah gangguan besar bagi kami ketika mencari bahasa baru untuk mengkonversi perangkat lunak perhitungan kami ke dari vb6 ol yang baik.
Saya senang kami pergi dengan C # tetapi masih mengganggu saya setiap kali saya menulis persamaan kompleks termasuk eksponen. Metode Math.Pow () membuat persamaan cukup sulit untuk membaca IMO.
Solusi kami adalah membuat kelas DoubleX khusus tempat kami menimpa ^ -operator (lihat di bawah)
Ini berfungsi cukup baik selama Anda mendeklarasikan setidaknya satu variabel sebagai DoubleX:
atau gunakan konverter eksplisit pada standar ganda:
Satu masalah dengan metode ini adalah eksponen dihitung dalam urutan yang salah dibandingkan dengan operator lain. Ini dapat dihindari dengan selalu meletakkan ekstra () di sekitar operasi yang lagi-lagi membuatnya agak sulit untuk membaca persamaan:
Saya harap ini dapat membantu orang lain yang menggunakan banyak persamaan kompleks dalam kode mereka, dan mungkin seseorang bahkan memiliki ide tentang bagaimana meningkatkan metode ini ?! :-)
Kelas DoubleX:
sumber
Saya terkejut tidak ada yang menyebutkan ini, tetapi untuk kasus sederhana (dan mungkin paling banyak ditemui), Anda hanya mengalikannya sendiri.
sumber
Math.Pow
. Saya baru saja menawarkan solusi yang jelas untuk kasus yang paling umum.Math.Pow(Number1, 2)
Karena belum ada yang menulis fungsi untuk melakukan ini dengan dua bilangan bulat, inilah salah satu caranya:
Atau di VB.NET:
sumber
Fungsi kekuatan yang baik adalah
Fungsi `Math.Pow` menggunakan fungsi daya prosesor dan sangat efisien.
sumber
Untuk apa nilainya, saya melewatkan operator ^ ketika menaikkan kekuatan 2 untuk mendefinisikan konstanta biner. Tidak dapat menggunakan Math.Pow () di sana, tetapi menggeser int 1 yang tidak ditandatangani ke kiri oleh nilai eksponen bekerja. Ketika saya perlu mendefinisikan konstanta (2 ^ 24) -1:
Ingat jenisnya harus (tidak) << (int).
sumber