好的,所以这是一个很大的代码中的一个问题,似乎没有意义。下面是代码问题...它在启动时打印Ratio = 0.0
控制台应该等于~0,348。
public class MathTest {
public static void main(String[] args) {
double ratio = 29511 / 84812;
System.out.println("Ratio = "+ ratio);
}
}
编辑:
如果代码如下:
public class MathTest {
public static void main(String[] args) {
int int1 = 7;
int int2 = 13;
double double1 = int1/int2;
System.out.println("double1 = "+ double1);
}
}
它再次打印“0.0”。
答案 0 :(得分:6)
当你说29511 / 84812
时,你已经无意中使用了整数除法,这在Java中会丢失小数点。使用double
文字(添加了.0
)代替:
double ratio = 29511.0 / 84812.0;
其他可在此处使用的解决方案:
double
:(double) 29511 / 84812
double
文字的另一种方式:29511D / 84812D
答案 1 :(得分:3)
您正在进行整数除法,因为29511
和84812
是整数。除法的结果为0,您将其保存为double,因此它变为0.0。
要解决此问题,请将赋值右侧的一个操作数强制转换为double。
double ratio = (double)29511 / 84812;
答案 2 :(得分:0)
将double ratio = 29511 / 84812
替换为double ratio = 29511.0 / 84812.0
;
答案 3 :(得分:0)
这很有道理。你正在划分两个整数来得到一个整数。在这种情况下,这意味着0。