Rumah >pembangunan bahagian belakang >C++ >Mengapa Program Penukaran C Fahrenheit ke Celsius Saya Sentiasa Output 0?

Mengapa Program Penukaran C Fahrenheit ke Celsius Saya Sentiasa Output 0?

Susan Sarandon
Susan Sarandonasal
2024-10-25 03:57:30783semak imbas

Why Does My C   Fahrenheit to Celsius Conversion Program Always Output 0?

Program C Menghadapi Keputusan Penukaran Tidak Dijangka: Percanggahan Fahrenheit ke Celsius

Aturcara C yang direka untuk menukar Fahrenheit kepada Celsius menemui output sifar yang tidak dijangka. Berikut ialah kod bersama-sama dengan isu:

Snippet Kod:

<code class="cpp">#include <iostream>
using namespace std;

int main() {
    float celsius;
    float fahrenheit;

    cout << "Enter Celsius temperature: ";
    cin >> celsius;
    fahrenheit = (5/9) * (celsius + 32);
    cout << "Fahrenheit = " << fahrenheit << endl;

    return 0;
}</code>

Ringkasan Isu:

Setelah dilaksanakan, atur cara tidak menukar Celsius kepada Fahrenheit dengan tepat dan sentiasa output 0.

Analisis Masalah:

Masalahnya terletak dalam formula yang digunakan untuk mengira Fahrenheit: fahrenheit = (5/9) * (celsius 32).

Dalam ini ungkapan:

  • 5/9 dikira sebagai pembahagian integer. Dalam C , jika kedua-dua operan dalam operasi bahagi ialah integer, hasilnya juga merupakan integer.
  • Bahagian integer memotong hasil, yang bermaksud mana-mana bahagian pecahan dibuang.

Oleh itu , 5/9 menilai kepada 0, dan suhu Fahrenheit yang terhasil juga 0, tanpa mengira nilai Celsius input.

Penyelesaian:

Untuk menyelesaikan isu, seseorang perlu memastikan bahawa pembahagian operasi menghasilkan nombor titik terapung. Ini boleh dicapai dengan menukar salah satu operan kepada jenis titik terapung. Kod yang diperbetulkan:

<code class="cpp">fahrenheit = (5.0/9) * (celsius + 32);</code>

Dengan pengubahsuaian ini, 5.0/9 menjadi pembahagian titik terapung, mengekalkan bahagian pecahan dan menghasilkan penukaran Fahrenheit yang betul.

Atas ialah kandungan terperinci Mengapa Program Penukaran C Fahrenheit ke Celsius Saya Sentiasa Output 0?. 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