Menentukan bilangan digit dalam integer ialah tugas biasa dalam pengaturcaraan. Walaupun pelbagai pendekatan wujud, adalah penting untuk mengoptimumkan prestasi, terutamanya apabila berurusan dengan integer yang besar.
Untuk pengiraan digit yang cekap, menggunakan jadual carian ialah penyelesaian yang optimum. Jika saiz integer diketahui, jadual carian menyediakan akses yang lebih pantas daripada pendekatan logaritma.
Berikut ialah pelaksanaan penyelesaian generik yang mengendalikan kedua-dua integer positif dan negatif:
<code class="c++">template <class T> int numDigits(T number) { int digits = 0; if (number < 0) digits = 1; // handle negative numbers while (number) { number /= 10; digits++; } return digits; }
Untuk meningkatkan kecekapan selanjutnya, pengoptimuman pengkhususan separa boleh digunakan untuk saiz integer tertentu. Berikut ialah contoh untuk integer 64-bit:
<code class="c++">template <> int numDigits(int64_t x) { if (x == INT64_MIN) return 19 + 1; if (x < 0) return digits(-x) + 1; if (x >= 100000000000000000) { if (x >= 1000000000000000000) return 19; return 18; } // ... (similar code for other ranges) return 1; }</code>
Pelaksanaan yang dioptimumkan ini memanfaatkan nilai julat tertentu untuk meminimumkan masa pengiraan.
Selain itu, pengkhususan separa juga boleh digunakan untuk saiz integer yang lebih kecil , seperti integer 32-bit dan 8-bit.
Dengan menggunakan jadual carian dan mengoptimumkan untuk saiz integer tertentu, kaedah ini menyediakan penyelesaian yang cekap dan berskala untuk menentukan bilangan digit dalam integer dalam C .
Atas ialah kandungan terperinci Bagaimanakah Kita Boleh Menentukan Bilangan Digit dalam Integer dalam C dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!