java division:找到不可转换的类型:int

时间:2011-05-29 20:48:52

标签: java math division

此代码有什么问题

int numOfPrimes=pf.FindNumPrimes(10000);
Double frequency=((Double)numOfPrimes)/10000d;

  发现了不可转换的类型:int   required:java.lang.Double Double   频率=((双)numOfPrimes)/ 10000D;

3 个答案:

答案 0 :(得分:4)

不要从基元转换为包装类型。使用小写double。在这种情况下,您不需要任何转换 - 编译器会自动执行此操作。以上内容可以简化为:

int numOfPrimes = ...;
double frequency = numOfPrimes / 10000d;

你几乎不应该将原语和包装器混合在一起。并且总是喜欢原语(如果可能的话)。如果需要,请使用Double.valueOf(..)进行转换。

答案 1 :(得分:4)

您正试图将int自动装箱到Double对象,该对象无效。

尝试:

int numOfPrimes=pf.FindNumPrimes(10000);

Double frequency=((double)numOfPrimes)/10000d;

答案 2 :(得分:3)

Double不是基本类型(如int,long,byte等)。这是一种类型。您可以使用自动装箱在双倍和双倍之间进行转换,但不能在intDouble之间进行转换。

您应该将numOfPrimes声明为double,或者将投射转换为double而不是Double

double numOfPrimes=pf.FindNumPrimes(10000);
Double frequency=((Double)numOfPrimes)/10000d;

int numOfPrimes=pf.FindNumPrimes(10000);
Double frequency=((double)numOfPrimes)/10000d;

或没有不必要的演员:

double numOfPrimes = pf.FindNumPrimes(10000);
Double frequency= numOfPrimes /10000d;

int numOfPrimes = 10;
Double frequency = numOfPrimes /10000d;