Operasi Pembahagian dalam Go
Dalam Go, operasi bahagi (/) dilakukan secara berbeza bergantung pada jenis operannya. Untuk memahami sebab ungkapan fmt.Println(3 / 10) menghasilkan 0 dan bukannya 0.3, mari kita mendalami sistem jenis Go.
Operan dalam ungkapan ini ialah pemalar integer yang tidak ditaip dan mengikut Go spesifikasi bahasa, hasil operasi aritmetik dengan pemalar yang tidak ditaip ditentukan oleh susunan jenis-jenis tersebut muncul. Pemalar integer mendahului pemalar titik terapung, jadi ungkapan dinilai sebagai pembahagian integer, menghasilkan 0.
Untuk mendapatkan hasil titik terapung, sekurang-kurangnya satu daripada operan mestilah pemalar titik terapung. Untuk mencapai ini, seseorang boleh menulis 3.0 / 10.0, 3.0 / 10, atau 3 / 10.0. Dua ungkapan pertama menggunakan pemalar titik terapung yang tidak ditaip, manakala ungkapan terakhir menukar pemalar integer 3 kepada float64.
Selain itu, apabila satu operan mempunyai pemalar yang tidak ditaip dan satu lagi ialah operan bertaip, jenis ungkapan ditentukan oleh operan yang ditaip. Oleh itu, var i3 = 3 dan var i10 = 10 boleh ditukar kepada float64 menggunakan fmt.Println(float64(i3) / float64(i10)).
Perhatikan bahawa literal angka seperti 10.0 adalah pemalar titik terapung yang tidak ditaip , dan ungkapan seperti i3 / 10.0 dan 3.0 / i10 masih akan dinilai kepada pembahagian integer kerana operan yang ditaip (i3 dan i10) yang menentukan jenis hasil.
Atas ialah kandungan terperinci Mengapakah Operasi Pembahagian Go (/) Kadangkala Mengembalikan 0 Daripada Perpuluhan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!