0

華氏で表される温度を摂氏に変換するプログラムを作成しようとしています。ユーザーが華氏の値を入力すると、プログラムは摂氏の値を出力します。ユーザーは華氏値として212を入力することになっていますが、プログラムは摂氏値として100.0を計算することになっていますが、100.0を取得したい場合は、代わりに摂氏値として0.0を取得します。

問題がどこにあるのかわかりません。操作の順序は可能ですか?

摂氏を華氏に変換する式は次のとおりです。 C = 5 / 9 (F - 32)

import acm.program.*; 

public class FahrenheitToCelsius extends ConsoleProgram {

    public void run() {
        println("This program converts Fahrenheit to Celsius");
        int fah = readInt("Enter Fahrenheit temperature: ");
        double ft = 5 / 9;
        double cel = ft * (fah - 32);
        println("Celsius equivalent = " + cel);
    }
}
4

3 に答える 3

4

5 / 9は整数除算であるため、に0割り当てている場合でもを返しますdouble
試してみてください5.0 / 9

于 2012-11-08T04:18:25.310 に答える
2
double ft = 5 / 9 ;

上記の行は、あなたが思っていることをしていません。とは両方とも整数である
ため、整数除算を行います。結果をdoubleに割り当てているという事実は重要ではありません。両方のオペランドが整数の場合、整数の計算が得られます。59

ftいつもそうです0、いつもそうcelです0

試す

double ft = 5.0/9.0;
于 2012-11-08T04:19:41.993 に答える
0

2つの整数を操作する場合、結果はdoubleに変換されません。それはintとしてのみ残ります。結果をdoubleにするには、少なくとも1つの数値をdoubleにする必要があります。例えば

       double ft = 5.0/9; //double
       double ft = 5/9.0;//double
       double ft = 5.0/9.0;//double

その間

        double ft = 5/9; //int 0

詳細については、浮動小数点演算仕様を参照してください。

于 2012-11-08T04:22:08.857 に答える