Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Go Mengendalikan Bahagian Integer, dan Bagaimana Saya Boleh Memastikan Keputusan Titik Terapung?

Bagaimanakah Go Mengendalikan Bahagian Integer, dan Bagaimana Saya Boleh Memastikan Keputusan Titik Terapung?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-02 08:34:14934semak imbas

How Does Go Handle Integer Division, and How Can I Ensure Floating-Point Results?

Memahami Bahagian dalam Go

Tidak seperti bahasa pengaturcaraan lain yang secara automatik melaksanakan pembahagian titik terapung, Go memerlukan penukaran eksplisit kepada titik terapung untuk pembahagian operasi. Ini boleh membawa kepada hasil yang tidak dijangka apabila bekerja dengan integer.

Pertimbangkan kod berikut:

fmt.Println(3 / 10)

Ini akan mengeluarkan 0 dan bukannya 0.3 yang dijangkakan. Sebabnya ialah operan, 3 dan 10, kedua-duanya adalah pemalar integer yang tidak ditaip. Menurut spesifikasi bahasa Go, jika operan bagi operasi binari adalah jenis pemalar tidak bertaip yang berbeza, operasi dan hasilnya menggunakan jenis yang muncul kemudian dalam senarai: integer, rune, floating-point, complex. Dalam kes ini, integer muncul sebelum titik terapung, jadi hasilnya ialah integer yang tidak ditaip (0).

Untuk mendapatkan hasil titik terapung, salah satu operan mestilah pemalar titik terapung. Pertimbangkan perkara berikut:

fmt.Println(3.0 / 10.0)
fmt.Println(3.0 / 10)
fmt.Println(3 / 10.0)

Semua ungkapan ini akan menilai kepada pemalar titik terapung yang tidak ditaip 0.3. Dengan menambahkan .0 pada salah satu operan, kami secara eksplisit menukarnya kepada titik terapung, menghasilkan hasil titik terapung.

Apabila operasi bahagi melibatkan operan yang ditaip, jenis operan yang ditaip menentukan jenis ungkapan. Untuk memastikan hasil float64, operan yang ditaip hendaklah float64. Contohnya:

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

Ungkapan ini akan menukar pembolehubah int kepada float64, menghasilkan hasil float64 sebanyak 0.3.

Adalah penting untuk ambil perhatian bahawa literal angka seperti 10.0 dan 3.0 adalah terapung yang tidak ditaip. -pemalar titik, bukan terapung64. Ungkapan seperti i3 / 10.0 dan 3.0 / i10 masih akan menghasilkan integer 0 kerana operan yang ditaip (i3 dan i10) menentukan jenis hasil.

Atas ialah kandungan terperinci Bagaimanakah Go Mengendalikan Bahagian Integer, dan Bagaimana Saya Boleh Memastikan Keputusan 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