我正在尝试用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;
任何人都可以告诉我为什么会发生这种事情,我认为至少将它声明为双重会返回一个值。如果有人知道,可以绕过它。
答案 0 :(得分:6)
默认情况下,Java中的数字为int
。所以当你5/9
时,由于它们都是int
,你会得到0.something,因为这是int
,所以只存储0。解决方案:
double s = 5.0/9; //or 5d/9
请注意,您只能明确投射一方,另一方隐式投射。
现在计算将采用double
方式,您将获得所需的结果。
答案 1 :(得分:3)
或者您可以(5d/9d); // OR (5d/9)
5
和9
明确double
答案 2 :(得分:0)
当你处理双打时,编写这样的代码是很好的做法:
double Fahrenheit = 100.0;
double celsius = (Fahrenheit - 32.0) * (5.0 / 9.0);