2013-05-20 46 views
-2

好,所以这是一个代码似乎没有意义的较大代码中的问题。下面是代码是问题...它启动时打印Ratio = 0.0控制台应该等于〜0,348。Java数学没有意义

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”。

回答

6

当您说29511/84812(在Java中丢失了小数点)时,您无意中使用了整数除法。使用double文字(有.0增加),而不是:在这里工作

double ratio = 29511.0/84812.0; 

其他的解决方案:

  • 铸造其中之一为double(double) 29511/84812
  • 使用 'd' 的另一种方式来表示Java double文字:29511D/84812D
+2

或倍率= 29511D/84812D; – Mena

+0

如果有两个整数,如 int int1 = 7; int int2 = 13; double double1 = int1/int2; System.out.println(“double1 =”+ double1); – user2313066

+0

@Mean正确,那是另一种方式。 – rgettman

0

替换double ratio = 29511/84812double ratio = 29511.0/84812.0;

0

它是非常有意义的。你将两个整数分开来得到一个整数。这意味着在这种情况下为0。

3

你在做整数除法,因为2951184812是整数。除法的结果为0,并且将它保存为双倍,因此它变为0.0。

要解决这个问题,请将赋值右侧的一个操作数强制转换为double。

double ratio = (double)29511/84812; 
+0

谢谢你解决了第二个问题 – user2313066