即时分部

我正在尝试用Java创建一个小程序,将华氏温度转换为摄氏温度。 它涉及扣除32并乘以5/9。 所以我这样做了。

double Fahrenheit = 100; double celsius = (Fahrenheit - 32) * (5/9); System.out.println(celsius); 

但由于某种原因,5/9返回零,甚至毁掉了它

 double s = 5/9; 

返回零,我不知道为什么。 我发现我能做到的唯一方法就是如果我宣布一切并且一步一步地慢慢地做。

 double x = 5, p = 9, n = (x/p), Fah = 100; double Cel = Fah - 32; Cel = Cel*n; 

任何人都可以告诉我为什么会发生这种事情,我认为至少将它声明为双重会返回一个值。 如果有人知道,那就绕道了。

Java中默认为NUM。 所以当你做5/9 ,因为它们都是int ,你会得到0.something,因为这是一个int ,所以只存储0。 解:

 double s = 5.0/9; //or 5d/9 

请注意,您只能显式地投射一侧,另一侧将被隐式投射。

现在计算将以double方式进行,您将获得所需的结果。

或者你可以做(5d/9d); // OR (5d/9) (5d/9d); // OR (5d/9)使59显式double

当你处理双打时,编写这样的代码是很好的做法:

 double Fahrenheit = 100.0; double celsius = (Fahrenheit - 32.0) * (5.0 / 9.0);