如何在Java中将double转换为int?

时间:2012-11-17 17:20:20

标签: java

我在看http://docs.oracle.com/javase/6/docs/api/java/lang/Double.html

我正在尝试

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

但是我收到了这个错误:

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

请帮忙吗?

6 个答案:

答案 0 :(得分:14)

double不是对象,它是原始类型。

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

如果你真的需要一个Double对象,你需要构建一个。

答案 1 :(得分:6)

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

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

或者只是使用强制转换:

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

答案 2 :(得分:2)

你可以简单地施展它:

int c = (int)b;

答案 3 :(得分:1)

类中的特定编译时错误是尝试在声明为基本类型的值上调用方法的结果。 原始类型不是Object,因此没有属性。因此他们没有任何方法。

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

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

或使用名为自动装箱的Java功能将double强制转换为Double ---以便使用intValue方法Number类实现的Double接口:

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

另一种方法是使用valueOf类的intValueDouble方法:

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

答案 4 :(得分:0)

尝试

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

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

    }

<强>输出

#### S = 207

答案 5 :(得分:0)

这条简单的线将完成这项工作。

integer_var_name = (int) double_var_name;