Java - 这个变量初始化代码有什么问题?

时间:2012-02-04 22:36:55

标签: java integer rounding

我写了以下内容,但Java不喜欢它!

int limit = Math.round(Math.sqrt(inputNumber));

我的IDE中的建议是在右侧添加(int)的演员,但我认为Math.round会将数字格式化为整数?

3 个答案:

答案 0 :(得分:4)

Math.sqrt(x)返回double。有几个重载的Math.round函数。以double作为参数的那个返回long,而不是int

答案 1 :(得分:0)

请参阅java.lang.Math

的API
  

static long:round(double a)
static int:round(float a)

     

static double:sqrt(double a)

Math.sqrt返回 double
当您向Math.round发送一个double时,它会返回 long 所以,Math.round(Math.sqrt(inputNumber))返回一个long,你必须将它转换为整数。

答案 2 :(得分:0)

由于Math.sqrt返回doubleMath.round的版本会被调用,返回long,但您想将其放入int,因此IDE的建议。