Java的Math.sqrt()返回结果为浮点数时,怎么转为整数?

int k2 = 15;
System.out.println(Math.sqrt(k2));

得到的结果是:3.872983346207417
请问怎么在得到结果的同时将浮点数转为int整数?

阅读 4.1k
2 个回答

Math.sqrt 的函数签名是

static double sqrt(double a);

所以在 int k2 = 15 的前提下 Math.sqrt(k2) 是先把参数隐式转换成 double 再执行,结果是 double

如果只取整数部分直接用 (int) 显式转换即可,即

int k2 = 15;
int iValue = (int) Math.sqrt(k2);
System.out.println(iValue);

结果是 3

如果需要四舍五入,用 Math.round(),它有两个重载

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

显然这里是 double 参数,返回 long,如果要变 int 也需要 (int) 强转,

int k2 = 15;
int iValue = (int) Math.round(Math.sqrt(k2));

结果是 4

在这个用例中,强转没有问题,因为 int 值开方之后的结果肯定比原值小,不会溢出。但是其他情况下将 doublelong 强转成 int 可能会溢出,产生不可预期的结果,比如

long lValue = Long.MAX_VALUE;
System.out.println((int) lValue);

结果是 -1

(int)Math.sqrt(k2)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题