2012-11-17 29 views
5

我看http://docs.oracle.com/javase/6/docs/api/java/lang/Double.html如何在Java中对int进行double操作?

我想

double b = Math.sqrt(absoluteNumber); 
    int c = b.intValue(); 

,但我收到此错误:

Factorise.java:13: error: double cannot be dereferenced 
int c = b.intValue(); 

帮助吗?

+10

'int c =(int)b;' – Mysticial

+0

可能重复[如何在Java中将double转换为int?](http://stackoverflow.com/questions/2143476/how-to-cast-a-double-to-an-int-in-java) –

回答

14

double不是对象,这是一个基本类型。

只需编写(int)b即可完成工作。

如果您确实需要一个Double对象,则需要构建一个对象。

2

您可以简单地将它转换:

int c = (int)b; 
5

double是“原始类型”,它不具有intValue()方法(实际上它没有任何方法,因为它是一个原始)。试试Double包装类,它有一个intValue()方法。

Double b = Math.sqrt(absoluteNumber); 
int c = b.intValue(); 

或者干脆用铸造:

double b = Math.sqrt(absoluteNumber); 
int c = (int) b; 
+2

在这种情况下使用'双'是矫枉过正,铸造会更好。 – arshajii

+0

@ A.R.S。真的,我真的指出了错误,但是,我提到了原始铸造现在我的答案,现在欢呼:) – PermGenError

0

尝试

public static void main(String[] args) { 
     Double b = Math.sqrt(43253); 
     int c = b.intValue(); 

     System.out.println("#### S = " + c); 

    } 

输出

#### S = 207 
+2

在这种情况下使用'双'是矫枉过正,铸造会更好。 – arshajii

+0

这仍然可以被视为一种选择 –

1

在类的具体编译时错误是试图调用上被宣布为一个基本类型值的方法的结果。 原始类型不是Object s,因此没有属性。因此他们没有任何方法。

您既可以在原始double值转换为原始int值,

double b = Math.sqrt(absoluteNumber) ; 
int a = (int) b ; 

或铸doubleDouble ---使用Java的功能,称为自动装箱 ---为了使用Number接口由Double类实现的方法intValue

double b = Math.sqrt(absoluteNumber) ; 
int a = ((Double) b).intValue() ; 

另一种方法是使用Double类的valueOfintValue方法:

double b = Math.sqrt(absoluteNumber) ; 
int a = (Double.valueOf(b)).intValue() ; 
0

这句简单的话将做的工作。

integer_var_name = (int) double_var_name; 
相关问题