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

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

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

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 > celsius;
    fahrenheit = (5/9) * (celsius + 32);
    cout <h3>問題の概要:</h3>
<p>実行時に、プログラムは摂氏を華氏に正確に変換せず、常に0 を出力します。</p>
<h3>問題分析:</h3>
<p>問題は華氏の計算に使用される式にあります: 華氏 = (5/9) * (摂氏 32)。</p>
<p>この中で式:</p>
<ul>
<li>5/9 は整数の除算として計算されます。 C では、除算演算の両方のオペランドが整数の場合、結果も整数になります。</li>
<li>整数除算は結果を切り捨てます。つまり、小数部分は破棄されます。</li>
</ul>
<p>したがって、5/9 は 0 と評価され、入力された摂氏の値に関係なく、結果の華氏温度も 0 になります。</p>
<h3>解決策:</h3>
<p>この問題を解決するには、除算が演算の結果は浮動小数点数になります。これは、オペランドの 1 つを浮動小数点型に変換することで実現できます。修正されたコード:</p>
<pre class="brush:php;toolbar:false"><code class="cpp">fahrenheit = (5.0/9) * (celsius + 32);</code>

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

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

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