Rumah >pembangunan bahagian belakang >C++ >Mengapa Fungsi pow(5,2) Saya Mengembalikan 24 Daripada 25?

Mengapa Fungsi pow(5,2) Saya Mengembalikan 24 Daripada 25?

Barbara Streisand
Barbara Streisandasal
2024-12-09 20:45:12838semak imbas

Why Does My pow(5,2) Function Return 24 Instead of 25?

Mengapa pow(5,2) Output 24 Daripada Nilai Sebenarnya

Isu:

Dalam kalkulator ringkas dengan fungsi matematik, pow () fungsi nampaknya menghasilkan keputusan yang tidak tepat, khususnya untuk kuasa. Operasi pow(5,2) mengembalikan 24, yang tidak betul.

Penyelesaian:

Punca percanggahan ini terletak pada penukaran jenis data. Fungsi pow() dalam kod yang disediakan mengembalikan nombor titik terapung, tetapi hasilnya diberikan kepada pembolehubah integer (int jawapan). Akibatnya, bahagian perpuluhan nombor itu dipotong apabila penukaran berlaku.

Membetulkan Isu:

Untuk mendapatkan hasil yang betul, pengiraan perlu diubah suai untuk mengendalikan titik terapung nilai. Terdapat dua pendekatan yang dicadangkan:

  1. Membundarkan Hasil Titik Terapung:

    Dengan menambahkan 0.5 pada hasil pow() sebelum menetapkannya kepada pembolehubah integer, ia boleh dibundarkan kepada integer terdekat. Kaedah ini sesuai apabila keputusan dijangka menjadi integer.

    int answer;
    answer = pow(number1,number2) + 0.5;
  2. Menggunakan Pembolehubah Bukan Integer untuk Keputusan Titik Terapung:

    Jika keputusan tidak dijamin sebagai integer, disyorkan untuk menggunakan pembolehubah berganda atau terapung dan bukannya integer. Dengan cara ini, bahagian perpuluhan nombor akan dikekalkan.

    double answer;
    answer = pow(number1,number2);

Fungsi Punca Kuasa Dua:

Fungsi punca kuasa dua dalam kod juga memberikan hasil kepada pembolehubah integer, yang tidak sesuai. Memandangkan punca kuasa dua selalunya bukan kamiran, adalah disyorkan untuk menggunakan pembolehubah berganda atau terapung untuk menyimpan hasilnya.

Atas ialah kandungan terperinci Mengapa Fungsi pow(5,2) Saya Mengembalikan 24 Daripada 25?. 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