Rumah > Artikel > pembangunan bahagian belakang > Mengapa Go Mengendalikan Bahagian Terapung oleh Sifar dengan Infinity Daripada Ralat Pengkompil?
Ralat Pengkompil untuk Bahagikan-Sifar dengan Nilai Terapung
Dalam Go, membahagikan float64 dengan sifar menghasilkan pemalar berangka khas dan bukannya ralat penyusun. Semasa membahagi dengan integer sifar menjana ralat, pembahagian titik terapung dengan sifar menghasilkan Inf atau -Inf, bergantung pada sama ada pengangkanya positif atau negatif.
Contohnya:
<code class="go">func main() { var y float64 = 0.0 var x float64 = 4.0 / y fmt.Println(x) // Prints +Inf }</code>
Tingkah laku ini berbeza daripada bahasa lain seperti C atau Python, di mana pembahagian dengan sifar menghasilkan ralat masa jalan.
Sebab di sebalik Tingkah Laku Luar Biasa
Pemalar angka Golang ialah istimewa dan mempunyai ketepatan sewenang-wenangnya. Ia tidak dipetakan secara langsung kepada jenis apungan IEEE754 dan tidak menyimpan infiniti atau sifar negatif sebagai pemalar.
Pilihan ini menghalang limpahan dalam pemalar, seperti yang dilihat dalam contoh berikut:
<code class="go">var x float64 = 1e1000 / 1e999 // Compiles successfully, equals 10</code>
Mencipta Nilai Infiniti
Jika anda secara khusus memerlukan nilai infiniti, anda boleh menggunakan fungsi matematik.Inf:
<code class="go">var x float64 = math.Inf(1) // Equivalent to +Inf</code>
Kelebihan Ralat Pengkompil
Walaupun mencetak Inf dan bukannya ralat mungkin kelihatan luar biasa, ia mempunyai kelebihan tertentu:
Atas ialah kandungan terperinci Mengapa Go Mengendalikan Bahagian Terapung oleh Sifar dengan Infinity Daripada Ralat Pengkompil?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!