Rumah > pembangunan bahagian belakang > C++ > Mengapa Pembahagian Integer dalam C Menghasilkan Keputusan Sifar Yang Tidak Dijangka Apabila Menggunakan Beregu?

Mengapa Pembahagian Integer dalam C Menghasilkan Keputusan Sifar Yang Tidak Dijangka Apabila Menggunakan Beregu?

Linda Hamilton
Lepaskan: 2024-12-02 05:46:12
asal
392 orang telah melayarinya

Why Does Integer Division in C   Produce Unexpected Zero Results When Using Doubles?

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;
}
Salin selepas log masuk

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;
Salin selepas log masuk

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!

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