Operasi titik terapung boleh memperkenalkan ralat apabila menukar antara jenis berangka yang berbeza. Dalam Go, menukar float64 kepada int mungkin membawa kepada hasil yang tidak dijangka disebabkan oleh pengehadan perwakilan titik terapung.
Komputer biasanya menyimpan data angka dalam format binari. Walau bagaimanapun, nombor perpuluhan seperti 100.55 tidak boleh diwakili sebagai nombor terhingga dalam sistem binari.
IEEE-754 ialah standard yang digunakan oleh Go untuk mewakili nilai float64. Ia menggunakan 53 bit untuk menyimpan digit dan 11 bit untuk eksponen, membenarkan julat nombor terhingga tetapi tidak dapat tidak memperkenalkan anggaran.
Apabila menukar nombor perpuluhan seperti 100.55 kepada perwakilan dalaman float64, ia tidak dapat dinyatakan dengan tepat. Sebaliknya, nombor perduaan terdekat digunakan, menghasilkan nilai yang sedikit berbeza daripada yang asal.
Dalam contoh kod, tolak float64(int(x )) sepatutnya menghasilkan 0.55, tetapi output lebih hampir kepada 0.5499999999999972. Ralat ini berlaku kerana penolakan dilakukan antara dua perwakilan berbeza bagi nombor yang sama, dengan float64(int(x)) mewakili 100.0, bukan 100.55.
Untuk mengelakkan ralat ketepatan, pertimbangkan pendekatan berikut:
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengelak Ralat Titik Terapung Apabila Menukar Terapung kepada Nombor Bulat dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!