Mengelakkan Ralat Titik Terapung dalam Go dengan Penukaran float64 kepada int
Apabila menukar nombor titik terapung (float64) kepada integer (int) dalam Pergi, pembangun mungkin menghadapi isu ketepatan yang membawa kepada hasil yang tidak dijangka. Artikel ini meneroka batasan perwakilan float64 IEEE-754 dan menyediakan panduan untuk mengurangkan ralat ini.
Memahami Isu Penukaran
Nombor titik terapung disimpan menggunakan IEEE -754 standard, yang mewakili nombor sebagai perwakilan binari terhingga dengan bit terhad tersedia untuk digit. Oleh itu, bukan semua nombor perpuluhan boleh diwakili dengan tepat dalam format binari ini.
Akibatnya, apabila menukar nilai float64 kepada int, perwakilan binari yang digunakan untuk float64 mungkin tidak sejajar dengan perwakilan binari int yang sepadan. Percanggahan ini membawa kepada ralat pembundaran, seperti yang dilihat dalam kod contoh di bawah:
x := 100.55 fmt.Println(x - float64(int(x))) // Output: 0.5499999999999972
Mengatasi Ralat
Menguruskan ralat titik terapung memerlukan pemahaman yang berikut:
Untuk mengelakkan ralat sedemikian, pertimbangkan strategi berikut:
Kesimpulan
Menukar float64 kepada int dalam Go melibatkan pemahaman perwakilan IEEE-754 dan menerima had sedia ada sistem nombor binari. Dengan menggunakan strategi yang dibincangkan di atas, pembangun boleh mengelakkan ralat ketepatan dan memastikan pengiraan berangka yang tepat.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengelak Ralat Titik Terapung Semasa Menukar `float64` kepada `int` dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!