Rumah >pembangunan bahagian belakang >C++ >Mengapa Pembahagian Integer dalam C Menghasilkan Keputusan Sifar Yang Tidak Dijangka Apabila Menggunakan Beregu?
Kekeliruan Keputusan Bahagian: Mengapa 3/5 Menghasilkan Sifar Walaupun Disimpan sebagai Double?
Apabila cuba melakukan pembahagian (/) dalam C , adalah penting untuk memahami jenis data yang terlibat. Pembahagian integer (jenis int) menghasilkan pembahagian integer, yang membuang bahagian pecahan. Walau bagaimanapun, ini boleh membawa kepada keputusan yang tidak dijangka apabila berurusan dengan beregu.
Contoh:
Pertimbangkan kod berikut:
#include <iostream> int main() { double f = 3 / 5; std::cout << f; return 0; }
Output Tidak Dijangka:
Mengejutkan ramai, kod ini dicetak 0 dan bukannya 0.6 yang dijangkakan.
Penjelasan:
Operator pembahagian (/) melakukan pembahagian integer kerana kedua-dua 3 dan 5 adalah integer. Untuk membetulkannya, pastikan satu operan ialah nombor nyata. Ini boleh dicapai dengan menambah titik perpuluhan, seperti yang dilihat dalam versi yang diperbetulkan ini:
double f = 3.0 / 5;
Pengubahsuaian ini memaksa pengkompil untuk melakukan pembahagian titik terapung, yang menghasilkan 0.6 dengan betul.
Kesimpulan:
Apabila melakukan pembahagian dengan beregu, adalah penting untuk mempertimbangkan jenis data terlibat. Menggunakan operan titik terapung memastikan hasil mengekalkan bahagian pecahannya, membawa kepada hasil yang diingini.
Atas ialah kandungan terperinci Mengapa Pembahagian Integer dalam C Menghasilkan Keputusan Sifar Yang Tidak Dijangka Apabila Menggunakan Beregu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!