Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将double转换为int_Java_Int_Double - Fatal编程技术网

Java 将double转换为int

Java 将double转换为int,java,int,double,Java,Int,Double,快速提问,将基元数据类型double转换为基元数据类型int的最佳方法是什么。目前我使用以下代码,但似乎有很多方法可以完成简单的任务 double i = 2.0; int i2 = Integer.parseInt(Double.toString(i)); 只需将双精度转换为(整数) 您可以使用“类型转换”将任何对象从一种兼容类型转换为另一种兼容类型。您可以使用以下语法: double i = 2.0; int i2 = (int) i; 注意我是如何将(int)放在变量I之前的?这基本

快速提问,将基元数据类型double转换为基元数据类型int的最佳方法是什么。目前我使用以下代码,但似乎有很多方法可以完成简单的任务

double i = 2.0;
int i2 = Integer.parseInt(Double.toString(i));
只需将双精度转换为(整数)


您可以使用“类型转换”将任何对象从一种兼容类型转换为另一种兼容类型。您可以使用以下语法:

double i = 2.0;
int i2 =  (int) i;

注意我是如何将
(int)
放在变量
I
之前的?这基本上是说‘嘿,如果可以的话,试着把i变成int’。由于java可以轻松地将浮点转换为int,因此它将。

您可以将double转换为int:

double i = 2.0
int i2 = (int) i;
或者,您可以将数字四舍五入到最接近的整数,然后将其转换为整数,以防您想要四舍五入:

double i = 2.2
int i2 = (int) Math.round(i);
或者,你可以使用

double i = 2.0
int i2 = Integer.parseInt(String.valueOf(i));

不过,关于最佳值,第一个选项对于最少的代码来说是最好的,而第二个选项则会更好,如果您希望得到最接近双精度的整数。

您还可以使用
Math.floor()

输出:

2
2
-2
-3

(int)您的doubleVariable
可能会工作。您如何定义“best”?它不会在Netbeans中产生错误,因此我希望这意味着它会工作。但是我还不能测试它。你还需要施放第二个…@Dukeling我真的这么认为,所以我尝试在eclipse中使用
inti=Math.round(2.2)
,结果你不需要施放它。因为在这种情况下,它将
2.2
视为
float
。用回答中的
double
声明试试。@Dukeling啊,当对
float
四舍五入时,你会得到
int
,当对
double
四舍五入时,你会得到
long
。更新的答案。另一种选择是使用浮动(2.2f),这将在不需要强制转换的情况下工作。
public class Example {
    public static void main(String args[]) { 
        double i = 2.9;

        System.out.println((int)(i));
        System.out.println((int)Math.floor(i));
        System.out.println((int)(-i));
        System.out.println((int)Math.floor(-i));        
    }
}
2
2
-2
-3