Amalan terbaik: Gunakan fungsi math.Mod() terbina dalam untuk mempertimbangkan nombor negatif bagi mengelakkan ralat pembundaran baki titik terapung (matematik.Remainder()) dan gunakan operasi bitwise untuk meningkatkan prestasi (hanya apabila pembahagi adalah kuasa 2) Aplikasi praktikal: Operasi modulo ( Mengira baki) Kawalan gelung (mencetak elemen khusus) Struktur data (jadual cincang dan pemetaan utama dalam set)
Amalan terbaik untuk baki operasi dalam bahasa Go
%
。使用时,它会将左操作数除以右操作数,并将余数作为结果返回。余数运算在不同的场景中都有着广泛的应用,包括模运算、循环控制和数据结构中。
最佳实践
1. 使用内置的取余函数
对于简单的余数计算,推荐使用内置的 math.Mod
函数。与 %
运算符类似,它将左操作数除以右操作数并返回余数,但它避免了一些可能导致意外结果的溢出和舍入行为。
import "math" result := math.Mod(10, 3) // result 等于 1
2. 考虑负数
当计算负数的余数时,%
运算符可能不会产生预期的结果。例如,-10 % 3
的结果是 -1 而不是 2,因为 Go 中的取模运算总是产生一个与除数具有相同符号的结果。为了得到正确的余数,可以将左操作数转换为非负数,然后进行取模运算。
dividend := -10 result := dividend % 3 if result < 0 { result += 3 } // result 等于 2
3. 避免舍入错误
对于浮点数的取余,%
运算符可能会导致舍入错误。这是因为浮点数在计算机中是以二进制表示的,因此它们的除法运算可能不是精确的。为了避免这个问题,可以使用 math.Remainder
函数来计算浮点数的余数。该函数保证返回一个与左操作数具有相同符号的余数。
dividend := 10.5 divisor := 3.0 result := math.Remainder(dividend, divisor) // result 等于 1.5
4. 使用位运算
在某些情况下,特别是当涉及到较小的整数时,使用位运算进行取模运算可以提高性能。对于 n
%
. Apabila digunakan, ia membahagikan operan kiri dengan operan kanan dan mengembalikan bakinya sebagai hasilnya. Operasi selebihnya digunakan secara meluas dalam senario yang berbeza, termasuk operasi modular, kawalan gelung dan struktur data. Amalan Terbaik
1. Gunakan fungsi baki terbina dalam
Untuk pengiraan baki yang mudah, adalah disyorkan untuk menggunakan fungsimath.Mod
terbina dalam. Seperti operator %
, ia membahagikan operan kiri dengan operan kanan dan mengembalikan bakinya, tetapi ia mengelakkan beberapa gelagat limpahan dan pembundaran yang boleh membawa kepada hasil yang tidak dijangka. remainder := number & (divisor - 1) // 当 divisor 是 2 的幂时
%
mungkin tidak menghasilkan keputusan yang diharapkan. Sebagai contoh, hasil -10 % 3
ialah -1 dan bukannya 2 kerana operasi modulo dalam Go sentiasa menghasilkan hasil dengan tanda yang sama seperti pembahagi. Untuk mendapatkan baki yang betul, tukar operan kiri kepada nombor bukan negatif dan kemudian lakukan operasi modulo. remainder := 25 % 7 // remainder 等于 4
%
boleh menyebabkan ralat pembundaran. Ini kerana nombor titik terapung diwakili dalam komputer sebagai binari, jadi operasi pembahagiannya mungkin tidak tepat. Untuk mengelakkan masalah ini, anda boleh menggunakan fungsi math.Remainder
untuk mengira baki nombor titik terapung. Fungsi ini dijamin untuk mengembalikan baki dengan tanda yang sama seperti operan kiri. 🎜for i := 1; i <= 10; i++ { if i % 2 == 1 { fmt.Println(i) } }
n
ialah kuasa 2, bakinya boleh dikira menggunakan formula berikut: 🎜hashValue := key % tableSize // 计算哈希值 entry := table[hashValue] // 从哈希表中获取对应的条目
Atas ialah kandungan terperinci Amalan terbaik untuk baki operasi dalam bahasa go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!