小编典典

实时划分

java

我正在尝试用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;

谁能告诉我为什么发生这种情况,我认为至少将其声明为double会返回值。如果有人知道,那就可以解决。


阅读 217

收藏
2020-11-26

共1个答案

小编典典

int默认情况下,Java中的数字是。因此,当您这样做时5/9,由于它们都是ints,您将得到0.something,并且由于这是一个int,因此将仅存储0。解:

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

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

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

2020-11-26