Rumah >pembangunan bahagian belakang >Golang >Mengapa Go Division Mengembalikan 0 Daripada 0.3?

Mengapa Go Division Mengembalikan 0 Daripada 0.3?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-04 14:00:13706semak imbas

Why Does Go Division Return 0 Instead of 0.3?

Bahagian dalam Go: Memahami Misteri 0.3

Apabila melakukan operasi bahagi dalam Go, anda mungkin menghadapi hasil yang tidak dijangka iaitu 0 dan bukannya jangkaan 0.3. Tingkah laku pelik ini timbul kerana penggunaan pemalar yang tidak ditaip dalam operasi.

Dalam Go, operan operasi binari pada mulanya dianggap sebagai pemalar yang tidak ditaip. Jenis operasi yang terhasil ditentukan oleh operan menggunakan susunan keutamaan tertentu. Untuk pemalar integer seperti 3 dan 10, hasilnya ialah integer yang tidak ditaip, oleh itu 0.

Untuk mendapatkan hasil titik terapung, seseorang mesti memastikan bahawa sekurang-kurangnya satu operan ialah pemalar titik terapung. Dengan menggunakan penukaran jenis eksplisit, seperti yang dilihat dalam ungkapan di bawah, anda boleh mencapai ketepatan yang diingini:

  • 3.0 / 10.0
  • 3.0 / 10
  • 3 / 10.0

Sebagai alternatif, anda boleh menukar integer operan kepada float64 secara eksplisit:

  • float64(i3) / 10
  • 3 / float64(i10)

Pengubahsuaian ini memaksa operasi menggunakan terapung- aritmetik titik, menghasilkan hasil yang dimaksudkan daripada 0.3.

Oleh itu, apabila melakukan operasi aritmetik dalam Go, berhati-hati dengan jenis pemalar yang digunakan. Untuk mengelakkan isu khusus dengan pembahagian ini, pastikan bahawa operan anda sama ada pemalar titik terapung eksplisit atau menjalani penukaran jenis eksplisit kepada float64.

Atas ialah kandungan terperinci Mengapa Go Division Mengembalikan 0 Daripada 0.3?. 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