Rumah > pembangunan bahagian belakang > C++ > Mengapakah `pow(5, 2)` Mengembalikan 24 dalam C : Isu Jenis Data?

Mengapakah `pow(5, 2)` Mengembalikan 24 dalam C : Isu Jenis Data?

Barbara Streisand
Lepaskan: 2024-12-06 12:03:12
asal
538 orang telah melayarinya

Why Does `pow(5, 2)` Return 24 in C  : A Data Type Issue?

Mengapa pow(5, 2) Mengembalikan 24: Soal Jenis Data dan Pembundaran

Dalam program C yang disediakan, pow( ) fungsi digunakan untuk mengira kuasa nombor. Walau bagaimanapun, apabila pow(5, 2) dilaksanakan, atur cara secara tidak dijangka mengembalikan 24, bukannya hasil yang betul 25. Ini mungkin membuatkan pengaturcara bingung, tertanya-tanya mengapa fungsi itu kelihatan tidak berfungsi.

Akar daripada isu ini terletak pada pengendalian jenis data dalam fungsi pow(). Secara lalai, pow() mengembalikan nombor titik terapung berketepatan dua, yang boleh menyimpan nilai perpuluhan. Walau bagaimanapun, atur cara itu kemudian memberikan dua kali ganda ini kepada pembolehubah integer, dengan berkesan memotong mana-mana bahagian perpuluhan. Dalam kes 5^2, hasil sebenar ialah 24.99997 atau serupa, tetapi pemangkasan membundarkannya kepada 24.

Untuk menyelesaikan masalah ini dan mendapatkan hasil integer yang betul, adalah perlu untuk membundarkan pow secara eksplisit () nilai kepada integer terdekat. Ini boleh dicapai dengan menambah 0.5 pada hasil sebelum memberikannya kepada pembolehubah integer. Coretan kod berikut menunjukkan pembetulan:

int answer;
answer = pow(number1, number2) + 0.5;
Salin selepas log masuk

Dengan menambahkan 0.5, kami secara berkesan membundarkan dua kali ganda kepada integer terdekat, memastikan keputusan 5^2 menjadi 25 seperti yang dijangkakan.

Adalah penting untuk ambil perhatian bahawa teknik pembundaran ini hanya sesuai untuk kes di mana hasil pengiraan kuasa dijamin sebagai integer. Dalam situasi di mana hasilnya mungkin bukan integer (cth., punca kuasa dua), adalah lebih baik untuk menetapkan hasil pow() kepada pembolehubah berganda atau terapung untuk mengekalkan nilai pecahan.

Atas ialah kandungan terperinci Mengapakah `pow(5, 2)` Mengembalikan 24 dalam C : Isu Jenis Data?. 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