sifar yang tidak dijangka dalam pembahagian: perangkap biasa
sifar yang tidak dijangka dari pengiraan bahagian adalah sumber kesilapan pengaturcaraan yang kerap. Mari kita periksa senario biasa untuk memahami mengapa ini berlaku.
Masalah:
Pertimbangkan kod ini:
decimal share = (18 / 58) * 100;
Penyelesaian:
Sebab akar adalah bahagian integer. Apabila membahagikan bilangan bulat, hasilnya dipotong (bahagian pecahan dibuang), yang membawa kepada hasil bilangan keseluruhan. Dalam kes ini, 18 dibahagikan dengan 58 adalah kurang daripada 1, jadi ia dipotong hingga 0.untuk membetulkannya, kita mesti menggunakan nilai perpuluhan secara eksplisit:
decimal share = (18m / 58m) * 100m;
menunjuk setiap nombor sebagai literal perpuluhan, memastikan bahagian terapung dan hasil yang tepat dan tidak sifar. Ini memaksa pengiraan menggunakan aritmetik terapung, memberikan jawapan pecahan yang tepat. m
Atas ialah kandungan terperinci Mengapa Bahagian Integer menghasilkan sifar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!