分部在飞

Jam*_*lly 1 java division

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

double Fahrenheit = 100;
double celsius = (Fahrenheit - 32) * (5/9);
System.out.println(celsius);
Run Code Online (Sandbox Code Playgroud)

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

double s = 5/9;
Run Code Online (Sandbox Code Playgroud)

返回零,我不知道为什么.我发现我能做到的唯一方法是,如果我宣布一切,并逐步进行.

double x = 5, p = 9, n = (x/p), Fah = 100;
double Cel = Fah - 32;
Cel = Cel*n;
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*oun 6

intJava中默认使用数字.所以当你这样做时5/9,因为它们都是ints,你会得到0.something,因为这是一个int,所以只存储0.解:

double s = 5.0/9; //or 5d/9
Run Code Online (Sandbox Code Playgroud)

请注意,您只能显式地转换一侧,另一侧将被隐式转换.

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