为什么以下代码需要(int)?

时间:2013-10-23 09:35:24

标签: java object

Java方法Math.round可用于舍入数字。以下哪个代码片段将浮点数转换为最接近的整数?

正确的答案是:

double f = 4.65          
int n = (int) Math.round(f);

为什么不是以下内容:

double f = 4.65;      
int n = Math.round(f);

4 个答案:

答案 0 :(得分:7)

Math.round(double)会返回long,因此会缩小演员阵容。

答案 1 :(得分:6)

数学有两种方法。

static long round(double a) 
//Returns the closest long to the argument.

static int round(float a) 
//Returns the closest int to the argument.

你正在使用第一个,它返回一个long值,它可以存储比int更大的整数,并且不能隐式地转换为int。

答案 2 :(得分:2)

如果您将double传递给Math.Round,那么您会得到一个long
只有当您传递float时才会得到int作为结果。

来自Java Docs:

  圆形(双重 a)
             返回与参数最接近的 long

     圆形(浮动 a)
             返回与参数最接近的 int

答案 3 :(得分:0)

根据Java文档Math.round(double)将返回long,因为long不是int,您必须使用(int)投射它。< / p>