Dav*_*vid 110 java double int rounding
现在我正在尝试这个:
int a = round(n);
Run Code Online (Sandbox Code Playgroud)
这里n是一个double,但它不工作.我究竟做错了什么?
Mih*_*ria 223
round()代码段中方法的返回类型是什么?
如果这是Math.round()方法,则当输入参数为Double时返回Long.
因此,您必须转换返回值:
int a = (int) Math.round(doubleVar);
Run Code Online (Sandbox Code Playgroud)
Dr.*_*mes 26
如果你不喜欢Math.round(),你也可以使用这个简单的方法:
int a = (int) (doubleVar + 0.5);
Run Code Online (Sandbox Code Playgroud)
val*_*dak 11
将double舍入为"最接近"的整数,如下所示:
1.4 - > 1
1.6 - > 2
-2.1 - > -2
-1.3 - > -1
-1.5 - > -2
private int round(double d){
double dAbs = Math.abs(d);
int i = (int) dAbs;
double result = dAbs - (double) i;
if(result<0.5){
return d<0 ? -i : i;
}else{
return d<0 ? -(i+1) : i+1;
}
}
Run Code Online (Sandbox Code Playgroud)
您可以根据需要更改条件(结果<0.5).
小智 5
Math.round 函数被重载 当它接收到一个浮点值时,它会给你一个 int。例如,这会起作用。
int a=Math.round(1.7f);
Run Code Online (Sandbox Code Playgroud)
当它收到一个 double 值时,它会给你一个 long,因此你必须将它的类型转换为 int。
int a=(int)Math.round(1.7);
Run Code Online (Sandbox Code Playgroud)
这样做是为了防止精度损失。您的 double 值是 64 位,但是您的 int 变量只能存储 32 位,因此它只是将其转换为 long,即 64 位,但您可以将其类型转换为 32 位,如上所述。
| 归档时间: |
|
| 查看次数: |
236650 次 |
| 最近记录: |