Dengan perkembangan bahasa golang, aplikasinya dalam bidang pengiraan berangka dan pengkomputeran saintifik menjadi semakin meluas, dan operasi pembahagian adalah operasi pengiraan yang sangat penting. Tidak seperti bahasa lain, operasi bahagi dalam golang memerlukan perhatian kepada beberapa butiran, seperti ralat yang mungkin berlaku apabila mengekalkan bilangan tempat perpuluhan. Artikel ini akan memperkenalkan masalah pengekalan perpuluhan dalam operasi bahagi dalam golang dan penyelesaian yang sepadan dari banyak aspek.
1. Operasi bahagian dalam golang
Dalam golang, semasa melakukan operasi bahagi, anda boleh menggunakan operator /. Sebagai contoh, coretan kod berikut mengira hasil a/b dan menyimpan hasilnya dalam hasil pembolehubah.
result:= a/b
Perlu diambil perhatian bahawa jika a dan b adalah kedua-dua integer, hasilnya juga akan menjadi integer. Jika anda mahu hasilnya menjadi nombor titik terapung, satu atau kedua-duanya hendaklah ditukar kepada nombor titik terapung.
2. Kekalkan perpuluhan
Biasanya, dalam operasi bahagi, kita perlu mengekalkan bilangan tempat perpuluhan tertentu. Sebagai contoh, dalam aplikasi kewangan kita perlu mengira kadar faedah atau faedah dengan tepat. Walau bagaimanapun, ralat tertentu mungkin berlaku apabila mengekalkan tempat perpuluhan dalam golang. Berikut adalah contoh mudah untuk menggambarkan masalah ini.
Sebagai contoh, katakan kita ingin mengira hasil pembahagian 1.11 dengan 9.1 dan kemudian simpannya kepada dua tempat perpuluhan:
a := 1.11 b := 9.1 c := a / b fmt.Printf("%.2f ", c)
Apabila mencetak hasil, kita dapat melihat bahawa hasilnya adalah 0.12 dan bukannya 0.12 yang kami jangkakan. Ralat dalam keputusan ini adalah kecil, tetapi dalam sesetengah aplikasi ia mungkin mempunyai kesan yang lebih ketara.
3. Penyelesaian
1 Gunakan pakej Decimal
Dalam golang, anda boleh menggunakan pakej Decimal untuk menyelesaikan masalah ini. Pakej Decimal menyediakan algoritma perpuluhan berketepatan tinggi yang boleh mengelakkan ralat yang disebabkan oleh pengiraan titik terapung. Berikut ialah kod sampel:
a := decimal.NewFromFloat(1.11) b := decimal.NewFromFloat(9.1) c := a.Div(b) fmt.Println(c.Round(2))
Pakej Perpuluhan secara automatik menjejaki ketepatan yang diperlukan semasa membahagikan nilai Perpuluhan. Fungsi Round() membundarkan hasil kepada dua tempat perpuluhan.
2. Gunakan perpustakaan matematik
Jika keperluan ketepatan tidak tinggi, anda juga boleh menggunakan coretan kod yang serupa dengan yang berikut dalam pustaka matematik untuk menyelesaikan masalah ini
a := 1.11 b := 9.1 c := a / b fmt.Printf("%.2f", math.Round(c*100)/100)
matematik.Bulatan Fungsi () membundarkan keputusan kepada dua tempat perpuluhan.
4. Ringkasan
Dalam golang, operasi bahagi memerlukan perhatian khusus untuk mengekalkan bilangan tempat perpuluhan. Apabila berurusan dengan pengiraan ketepatan tinggi, menggunakan pakej Decimal adalah pilihan terbaik. Untuk aplikasi biasa, menggunakan fungsi daripada perpustakaan matematik adalah penyelesaian yang mudah dan sesuai. Untuk pengiraan ketepatan yang lebih tinggi, perpustakaan atau algoritma lain juga boleh dipertimbangkan. Tidak kira kaedah yang digunakan, kita harus memilih penyelesaian yang sesuai berdasarkan keperluan aplikasi khusus untuk mengelak daripada menemui masalah kemudian.
Atas ialah kandungan terperinci novel tersimpan bahagian golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!