Rumah > pembangunan bahagian belakang > C++ > Mengapa Pembahagian Integer dalam C Menghasilkan Sifar Apabila Membahagi 3 dengan 5 sebagai Beregu?

Mengapa Pembahagian Integer dalam C Menghasilkan Sifar Apabila Membahagi 3 dengan 5 sebagai Beregu?

Barbara Streisand
Lepaskan: 2024-12-02 12:33:12
asal
443 orang telah melayarinya

Why Does Integer Division in C   Result in Zero When Dividing 3 by 5 as Doubles?

Anomali Pembahagian Titik Terapung: Mengapakah (3/5) Menghasilkan Sifar dalam Ketepatan Berganda?

Apabila melakukan operasi aritmetik pada titik terapung nombor, pengaturcara sering menemui hasil yang mengejutkan. Satu anomali sedemikian timbul dengan operator bahagian (/). Walaupun menyimpan nombor sebagai nilai titik terapung berketepatan dua kali, pembahagian mudah seperti (3/5) boleh menghasilkan keluaran sifar yang tidak dijangka.

Tingkah laku ini berpunca daripada fakta bahawa kedua-dua 3 dan 5 adalah integer secara lalai dalam C . Apabila integer digunakan dalam ungkapan aritmetik, pengendali bahagian melakukan pembahagian integer, yang membuang bahagian pecahan hasil.

Membetulkan Operasi Pembahagian

Untuk mendapatkan hasil pembahagian titik terapung yang betul, seseorang perlu memastikan bahawa sekurang-kurangnya satu operan ialah nilai titik terapung. Ini boleh dicapai dengan menukar salah satu integer kepada nombor titik terapung berketepatan dua kali. Sebagai contoh, seseorang boleh menggunakan kod berikut:

double f = 3.0 / 5;
Salin selepas log masuk

Dalam kes ini, 3.0 ialah nombor titik terapung berketepatan dua kali, memastikan bahawa pengkompil melakukan pembahagian titik terapung, yang mengekalkan bahagian pecahan daripada hasilnya.

Dengan menukar salah satu operan kepada nilai titik terapung, operator bahagian kini menghasilkan hasil yang dijangkakan, yang ialah 0.6 dalam kes ini. Teknik ini membolehkan pengaturcara melakukan operasi aritmetik pada nombor titik terapung dengan betul dan mengelakkan keluaran sifar yang tidak dijangka.

Atas ialah kandungan terperinci Mengapa Pembahagian Integer dalam C Menghasilkan Sifar Apabila Membahagi 3 dengan 5 sebagai Beregu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan