ホームページ  >  記事  >  バックエンド開発  >  華氏から摂氏への変換プログラムが常に 0 を出力するのはなぜですか?

華氏から摂氏への変換プログラムが常に 0 を出力するのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-25 03:57:30629ブラウズ

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

C プログラムで予期しない変換結果が発生しました: 華氏から摂氏への不一致

華氏から摂氏に変換するように設計された C プログラムで、予期しない出力ゼロが発生しました。問題とコードは次のとおりです:

コード スニペット:

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

問題の概要:

実行時に、プログラムは摂氏を華氏に正確に変換せず、常に0 を出力します。

問題分析:

問題は華氏の計算に使用される式にあります: 華氏 = (5/9) * (摂氏 32)。

この中で式:

  • 5/9 は整数の除算として計算されます。 C では、除算演算の両方のオペランドが整数の場合、結果も整数になります。
  • 整数除算は結果を切り捨てます。つまり、小数部分は破棄されます。

したがって、5/9 は 0 と評価され、入力された摂氏の値に関係なく、結果の華氏温度も 0 になります。

解決策:

この問題を解決するには、除算が演算の結果は浮動小数点数になります。これは、オペランドの 1 つを浮動小数点型に変換することで実現できます。修正されたコード:

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

この変更により、5.0/9 は浮動小数点除算になり、小数部分が保持され、正しい華氏変換が得られます。

以上が華氏から摂氏への変換プログラムが常に 0 を出力するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。