Java转换代码 - 为什么除法不会返回相同的结果?

时间:2016-06-04 14:43:24

标签: java integer-division

初学者问题。
这可能更像是一个数学问题,我将代码排序,但我不知道为什么解决方案有效。请帮忙解释一下:

如你所知,从摄氏度到华氏度的转换公式是

  F=C*9/5+32

现在,我正在尝试编写一个简单的Java代码来进行转换,并且我将摄氏和farenheit定义为double和最终变量

  final double MAGIC_NUMBER=9/5;

然后计算转换

  farenheit=celsius*MAGIC_NUMBER+32;

结果是24.0摄氏度= 56.0华氏度 - 这是不正确的

我尝试用不同的方式定义相同的东西:

  final double MAGIC_NUMBER=1.8;

结果是24.0摄氏度= 75.2华氏度 - 这是正确的。现在,1.8与9/5相同。为什么第二个分配工作而不是第一个?

以下是整个代码:

package farenheit;

import java.util.Scanner;
public class Farenheit {

public static void main(String[] args) {
   //declare variables
   double celsius;
   double farenheit;
   final double MAGIC_NUMBER=1.8;

   //prompt user to give me the temperature in celsius

   Scanner in=new Scanner(System.in);
   System.out.print("temperature in celsius= ");
   celsius=in.nextDouble();

   //calculate the conversion

   farenheit=celsius*MAGIC_NUMBER+32;

   //print out the result       
   System.out.printf("%.1f celsius = %.1f farenheit \n", celsius,      farenheit);
}  
 }

谢谢!

0 个答案:

没有答案