Amalan terbaik untuk baki operasi dalam bahasa go

PHPz
Lepaskan: 2024-04-07 18:36:02
asal
718 orang telah melayarinya

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

Amalan terbaik untuk baki operasi dalam bahasa Go

%。使用时,它会将左操作数除以右操作数,并将余数作为结果返回。余数运算在不同的场景中都有着广泛的应用,包括模运算、循环控制和数据结构中。

最佳实践

1. 使用内置的取余函数

对于简单的余数计算,推荐使用内置的 math.Mod 函数。与 % 运算符类似,它将左操作数除以右操作数并返回余数,但它避免了一些可能导致意外结果的溢出和舍入行为。

import "math"

result := math.Mod(10, 3) // result 等于 1
Salin selepas log masuk

2. 考虑负数

当计算负数的余数时,% 运算符可能不会产生预期的结果。例如,-10 % 3 的结果是 -1 而不是 2,因为 Go 中的取模运算总是产生一个与除数具有相同符号的结果。为了得到正确的余数,可以将左操作数转换为非负数,然后进行取模运算。

dividend := -10
result := dividend % 3
if result < 0 {
    result += 3
}
// result 等于 2
Salin selepas log masuk

3. 避免舍入错误

对于浮点数的取余,% 运算符可能会导致舍入错误。这是因为浮点数在计算机中是以二进制表示的,因此它们的除法运算可能不是精确的。为了避免这个问题,可以使用 math.Remainder 函数来计算浮点数的余数。该函数保证返回一个与左操作数具有相同符号的余数。

dividend := 10.5
divisor := 3.0
result := math.Remainder(dividend, divisor) // result 等于 1.5
Salin selepas log masuk

4. 使用位运算

在某些情况下,特别是当涉及到较小的整数时,使用位运算进行取模运算可以提高性能。对于 n

Dalam bahasa Go, cari Operator yang selebihnya ialah %. 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 fungsi math.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 的幂时
Salin selepas log masuk
2. Pertimbangkan nombor negatif

Apabila mengira baki nombor negatif, pengendali % 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
Salin selepas log masuk
3. Elakkan ralat pembundaran

Untuk baki nombor titik terapung, pengendali % 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)
    }
}
Salin selepas log masuk
🎜🎜4. Gunakan operasi bitwise🎜🎜🎜Dalam sesetengah kes, terutamanya apabila integer yang lebih kecil terlibat, menggunakan operasi bitwise untuk operasi modulo boleh meningkatkan prestasi. Untuk pembahagi dengan n ialah kuasa 2, bakinya boleh dikira menggunakan formula berikut: 🎜
hashValue := key % tableSize // 计算哈希值
entry := table[hashValue] // 从哈希表中获取对应的条目
Salin selepas log masuk
🎜🎜Kes praktikal🎜🎜🎜🎜Operasi modular🎜🎜🎜Operasi modular ialah aplikasi klasik baki operasi. Ia digunakan untuk mengira baki nombor tertentu dibahagikan dengan nombor lain. Sebagai contoh, kod berikut mengira baki 25 dibahagikan dengan 7: 🎜rrreee🎜🎜Kawalan gelung🎜🎜🎜Operasi baki juga boleh digunakan dalam kawalan gelung. Contohnya, kod berikut mencetak nombor ganjil dari 1 hingga 10: 🎜rrreee🎜🎜Struktur Data🎜🎜🎜Dalam struktur data seperti jadual dan set cincang, operasi selebihnya digunakan untuk memetakan kunci ke kedudukan tertentu dalam baldi atau set. Contohnya, kod berikut mencari kunci dalam jadual cincang: 🎜rrreee

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!