Rumah >pembangunan bahagian belakang >Golang >Mengapa Pembahagian Integer Go Menghasilkan 0 Daripada Nombor Titik Terapung?
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!