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
Linda Hamiltonasal
2024-12-02 05:46:12316semak imbas

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;
}

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!

Kenyataan:
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