0

摂氏の温度を華氏に変換する必要があります。ただし、温度を摂氏で出力すると、間違った答えが得られます。助けてください !(式は c = (5/9) * (f -32) です。華氏に 1 を入力すると、c = -0.0 になります。何が悪いのかわかりません :s

ここにコードがあります

import java.io.*; // import/output class
public class FtoC { // Calculates the temperature in Celcius
    public static void main (String[]args) //The main class
    {
    InputStreamReader isr = new InputStreamReader(System.in); // Gets user input
    BufferedReader br = new BufferedReader(isr); // manipulates user input
    String input = ""; // Holds the user input
    double f = 0; // Holds the degrees in Fahrenheit
    double c = 0; // Holds the degrees in Celcius
    System.out.println("This program will convert the temperature from degrees Celcius to Fahrenheit.");
    System.out.println("Please enter the temperature in Fahrenheit: ");
    try {
        input = br.readLine(); // Gets the users input
        f = Double.parseDouble(input); // Converts input to a number
    }
    catch (IOException ex)
    {
        ex.printStackTrace();
    }
    c = ((f-32) * (5/9));// Calculates the degrees in Celcius
    System.out.println(c);
    }
}
4

5 に答える 5

4

整数除算を行っている5 / 9ため、0.

浮動小数点除算に変更します: -

c = ((f-32) * (5.0/9));

または、最初に乗算を行います (除算から括弧を削除します): -

c = (f-32) * 5 / 9;

以来、fは二重です。分子doubleのみになります。この方法が良いと思います。

于 2012-12-19T06:32:53.457 に答える
0

特に明示的に指定されていない限り、Java はすべての数値を整数として扱います。整数は数値の小数部分を格納できないため、整数除算が実行されると、剰余は破棄されます。したがって:5/9 == 0

Rohit のソリューションc = (f-32) * 5 / 9;はおそらく最もクリーンです (ただし、明示的な型がないため、少し混乱する可能性があります)。

于 2012-12-19T07:36:58.147 に答える
0

精度が失われるため、int の代わりに double を使用してみてください。数式全体を使用する代わりに、一度に 1 つの計算を使用する

例: 適切なキャストを使用する Double this = 5/9

F - ダブル 32

于 2012-12-19T06:34:24.330 に答える
0

むしろこれを使用してください:

c = (int) ((f-32) * (5.0/9));// Calculates the degrees in Celcius 

除算が含まれるため、適切な除算を取得するために int のみを使用しないでください。

于 2012-12-19T06:35:31.413 に答える
0

これを使って

System.out.println((5F / 9F) * (f - 32F));
于 2012-12-19T06:39:17.490 に答える