【问题标题】:Fahrenheit to Celsius conversion华氏到摄氏度的转换
【发布时间】:2012-11-08 04:16:34
【问题描述】:

我正在尝试编写一个程序,它将以华氏度表示的温度转换为摄氏度。用户输入华氏值,程序打印出摄氏值。用户应该输入 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);
    }
}

【问题讨论】:

    标签: java double


    【解决方案1】:

    5 / 9 是一个整数除法,因此即使您将其分配给 double,它也会返回 0。
    试试5.0 / 9。

    【讨论】:

    • 是的,这就是问题所在。谢谢。
    【解决方案2】:
    double ft = 5 / 9 ;
    

    上面的行并没有像你想象的那样做。
    因为5 和9 都是整数,所以它会进行整数除法。 您将结果分配给 double 的事实并不重要,如果两个操作数都是整数,您将得到整数数学。

    所以ft 总是0,所以cel 总是0

    试试

    double ft = 5.0/9.0;
    

    【讨论】:

      【解决方案3】:

      当您对两个整数进行运算时,结果不会转换为双精度数。它仅保留为 int。 要将结果变为双精度数,至少有一个数字应为双精度数。 例如

             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
      

      详情请咨询Floating Point Operations Specification。

      【讨论】:

      • @JessicaM.:如果您认为这有帮助,请不要忘记接受答案。
      猜你喜欢
      • 1970-01-01
      • 2016-04-14
      • 1970-01-01
      • 2021-06-17
      • 1970-01-01
      • 1970-01-01
      • 2016-02-08
      • 2019-02-24
      • 1970-01-01
      相关资源
      最近更新 更多