Java方法Math.round
可用于舍入数字。以下哪个代码片段将浮点数转换为最接近的整数?
正确的答案是:
double f = 4.65
int n = (int) Math.round(f);
为什么不是以下内容:
double f = 4.65;
int n = Math.round(f);
答案 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>