Keputusan Bahagian Zero yang Tidak Dihadapi: Perangkap biasa
Pembahagian nombor kadang-kadang boleh menghasilkan hasil yang mengejutkan, seperti mendapatkan sifar walaupun kedua-dua input tidak sifar. Ini sering berpunca dari bagaimana bahasa pengaturcaraan mengendalikan jenis data semasa pengiraan.
Pertimbangkan contoh kod ini:
1 | <code>decimal share = (18 / 58) * 100;</code>
|
Salin selepas log masuk
di sini, 18 dan 58 dianggap sebagai bilangan bulat. Bahagian Integer sentiasa menghasilkan hasil integer; Mana -mana bahagian pecahan dipotong. Oleh itu, 18 dibahagikan dengan 58 hasil dalam 0.
Penyelesaiannya adalah untuk memastikan bahawa bahagian dilakukan menggunakan jenis data perpuluhan:
1 | <code>decimal share = (18m / 58m) * 100m;</code>
|
Salin selepas log masuk
akhiran "M" secara eksplisit membuang nombor sebagai perpuluhan. Ini memaksa bahagian perpuluhan, memberikan hasil yang tepat dan tidak sifar. Perubahan mudah ini menghalang ralat pemangkasan dan menyelesaikan masalah.
Atas ialah kandungan terperinci Mengapa bahagian saya menghasilkan sifar walaupun input bukan sifar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!