Go Compiler Error untuk Float Zero Division
Go programmer mungkin menghadapi ralat pengkompil apabila membahagikan nombor titik terapung dengan sifar, seperti yang digambarkan dalam coretan kod di bawah:
<code class="go">func main() { var y float64 = 0.0 var x float64 = 4.0 / y fmt.Println(x) }</code>
Kod ini akan mengembalikan ralat yang serupa dengan:
prog.go:9:22: division by zero
Memahami Ralat
Seseorang mungkin mempersoalkan mengapa pengkompil menghasilkan ralat dan bukannya mencetak amaran pengkompil. Jawapannya terletak pada sifat pemalar berangka dalam Go.
Ketepatan Pemalar Berangka
Pemalar berangka Go mempunyai ketepatan arbitrari dan tidak melimpah. Ini bermakna mereka tidak boleh mewakili nilai IEEE-754 seperti infiniti atau -0.
Bahagian dengan Sifar
Bahagian dengan sifar ialah operasi yang tidak ditentukan dalam matematik dan akan membawa kepada infiniti dalam IEEE-754. Walau bagaimanapun, memandangkan pemalar angka Go kekurangan perwakilan untuk infiniti, pengkompil menganggap pembahagian dengan sifar sebagai ralat untuk mengelakkan situasi tidak ditentukan dalam kod.
Alternatif untuk Infiniti
Jika seseorang memerlukan nilai infiniti untuk pengiraan, mereka boleh menggunakan fungsi math.Inf. Contohnya:
<code class="go">var x float64 = math.Inf(1)</code>
Atas ialah kandungan terperinci Mengapa pengkompil Go membuang ralat untuk membahagikan apungan dengan sifar dan bukannya amaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!