Rumah >pembangunan bahagian belakang >C++ >Adakah C Tiada Fungsi `round()`, dan Bagaimana Ia Boleh Dilaksanakan?

Adakah C Tiada Fungsi `round()`, dan Bagaimana Ia Boleh Dilaksanakan?

Patricia Arquette
Patricia Arquetteasal
2024-12-23 06:46:14907semak imbas

Is C   Missing a `round()` Function, and How Can It Be Implemented?

Pembundaran Titik Terapung dalam C : Ketiadaan bulat()

Sementara fungsi seperti siling() dan lantai() tersedia dalam math.h untuk membulatkan nombor titik terapung, perpustakaan C standard tidak mempunyai fungsi pusingan() khusus. Ini telah membawa kepada persoalan sama ada round() tiada atau wujud di bawah nama yang berbeza dalam standard C 98.

Pelaksanaan Fungsi pusingan Tersuai()

Memandangkan round() tidak disediakan secara asli, pengguna terpaksa membuat pelaksanaan mereka sendiri. Satu pelaksanaan sedemikian, berdasarkan kaedah pusingan separuh ke atas, ialah:

double round(double d) {
  return floor(d + 0.5);
}

Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa pelaksanaan ini mungkin tidak selalu menghasilkan hasil yang diingini, kerana ia membundarkan nombor yang tepat. 0.5 jauh dari integer ke integer genap terdekat.

Pembundaran Alternatif Kaedah

Kaedah pembundaran lain wujud, seperti bulat-ke-genap, yang menyediakan pendekatan pembundaran yang kurang berat sebelah dan lebih disukai untuk pembundaran volum tinggi.

Pemasukan dalam C 11

Nasib baik, C 11 memperkenalkan fungsi pusingan() terbina dalam, termasuk std::round, std::lround, dan std::llround, yang menyediakan gelagat pembundaran standard untuk pelbagai jenis data. Fungsi ini menawarkan pelaksanaan yang lebih mantap dan cekap daripada penyelesaian tersuai.

Atas ialah kandungan terperinci Adakah C Tiada Fungsi `round()`, dan Bagaimana Ia Boleh Dilaksanakan?. 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