Rumah >pembangunan bahagian belakang >Golang >Mengapa Pembahagian Integer Go Menghasilkan 0 Daripada Nombor Titik Terapung?

Mengapa Pembahagian Integer Go Menghasilkan 0 Daripada Nombor Titik Terapung?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-14 16:37:11758semak imbas

Why Does Go's Division of Integers Result in 0 Instead of a Floating-Point Number?

Bahagian Titik Terapung dalam Go

Walaupun pembahagian yang jelas kelihatan mudah, melaksanakan operasi ini dalam Go mungkin menemui hasil yang tidak dijangka. Seperti yang digambarkan dalam contoh yang disediakan:

fmt.Println(3/10)

Coretan kod ini secara mengejutkan menghasilkan "0" dan bukannya "0.3" yang dijangkakan. Untuk memahami gelagat ini, adalah penting untuk menyelidiki selok-belok sistem jenis Go.

Dalam Go, operan pengendali bahagian ialah pemalar yang tidak ditaip, bermakna jenis data mereka tidak dinyatakan secara eksplisit. Menurut spesifikasi Go, apabila berurusan dengan operasi binari dengan pemalar yang tidak ditaip, jenis data hasil ditentukan oleh keutamaan jenis yang terlibat. Dalam kes ini, kedua-dua operan ialah integer, menghasilkan ungkapan integer yang tidak ditaip dengan nilai "0".

Untuk mendapatkan hasil pemalar titik terapung, salah satu operan mesti ditaip secara eksplisit sebagai apungan. Berikut ialah beberapa contoh yang menunjukkan perkara ini:

3.0 / 10.0
3.0 / 10
3 / 10.0

Dalam ungkapan ini, pemalar titik terapung (cth., "3.0") memastikan bahawa hasilnya juga pemalar titik terapung dengan nilai "0.3 ".

Sebagai alternatif, jika satu operan ialah pembolehubah yang ditaip, jenis data pembolehubah yang ditaip diutamakan. Sebagai contoh, ungkapan berikut menukarkan pembolehubah integer kepada nilai float64 dan menghasilkan "0.3":

var i3 = 3
var i10 = 10
fmt.Println(float64(i3) / 10)
fmt.Println(3 / float64(i10))

Atas ialah kandungan terperinci Mengapa Pembahagian Integer Go Menghasilkan 0 Daripada Nombor Titik Terapung?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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