Terangkan mengapa 8%-3 bersamaan dengan 0 dalam PHP
Dalam PHP, jika kita cuba mengira 8%-3 , kita akan mendapat nilai yang menghasilkan 0 . Ini mungkin mengelirukan sesetengah pembangun kerana dalam matematik kita menjangkakan bahawa hasil penilaian ungkapan ini sepatutnya 2. Walau bagaimanapun, dalam PHP, terdapat beberapa peraturan khas untuk menggunakan operator selebihnya (%), yang mungkin membawa kepada beberapa hasil yang luar biasa.
Mula-mula, mari kita fahami definisi operator baki dalam matematik. Operator baki digunakan untuk mengira baki selepas membahagikan satu nombor dengan nombor lain. Dalam matematik, operator ini intuitif untuk mengira integer positif. Sebagai contoh, apabila mengira baki 8 dibahagikan dengan 3, kita mendapat 2. Ini kerana 8 boleh dibahagi dengan 3 dua kali, meninggalkan baki 2.
Walau bagaimanapun, dalam PHP, ini tidak selalu berlaku. Apabila pengendali selebihnya digunakan pada nombor negatif, hasilnya mungkin negatif, sifar atau positif, bergantung pada tanda-tanda dividen dan pembahagi. Khususnya, apabila dividen ialah nombor positif dan pembahagi ialah nombor negatif, peraturan pengiraan pengendali selebihnya adalah seperti berikut:
Jika dividen boleh dibahagikan dengan pembahagi, hasilnya adalah nombor negatif.
Jika dividen tidak membahagikan pembahagi, tetapi dividen positif, hasilnya adalah nombor positif.
Jika dividen tidak membahagikan pembahagi tetapi dividen negatif, hasilnya negatif.
Seterusnya, mari analisa mengapa keputusan 8%-3 dalam PHP ialah 0. Mengikut peraturan di atas, kita boleh tahu bahawa 8 ialah nombor positif dan -3 ialah nombor negatif, jadi hasilnya haruslah nombor positif. Walau bagaimanapun, semasa proses pengiraan khusus, PHP melakukan beberapa pemprosesan dalaman.
Apabila mengira 8%-3, PHP akan terlebih dahulu mengira integer terbesar n supaya n darab -3 adalah kurang daripada atau sama dengan 8. Dalam contoh ini, n=2 kerana 2 kali -3 sama dengan -6, iaitu kurang daripada atau sama dengan 8. PHP kemudian menambah -6 hingga 8 untuk mendapatkan hasil akhir 2. Jadi, hasilnya ialah 2 dan bukan 0.
Lalu kenapa keputusannya 0? Ini kerana pengendali selebihnya juga dipengaruhi oleh jenis data dividen. Jika dividen ialah integer, seperti 8, hasilnya ialah 2. Walau bagaimanapun, jika dividen adalah nombor titik terapung, seperti 8.0, maka hasilnya menjadi 0.
Ini kerana apabila dividen adalah nombor titik terapung, pengiraan di dalam PHP akan menukarkannya kepada integer, iaitu menukar 8.0 kepada 8, dan kemudian melakukan pengiraan mengikut peraturan yang dinyatakan sebelum ini. Oleh kerana 8 tidak membahagikan -3, ia dinilai kepada 0.
Ringkasnya, sebab mengapa keputusan 8%-3 dalam PHP ialah 0 adalah disebabkan oleh kesan peraturan pemprosesan PHP dan jenis data pada nombor negatif apabila mengira operasi yang selebihnya. Pembangun perlu memberi perhatian kepada peraturan dan penukaran jenis data ini semasa menulis kod untuk mengelakkan hasil pengiraan yang tidak disengajakan dan salah.
Atas ialah kandungan terperinci Analisis sebab mengapa 8%3 sama dengan 0 dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!