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
Lepaskan: 2024-12-14 16:37:11
asal
750 orang telah melayarinya

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)
Salin selepas log masuk

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
Salin selepas log masuk

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))
Salin selepas log masuk

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!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan