華氏から摂氏に変換するように設計された 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 サイトの他の関連記事を参照してください。