Answers:
使用Math.round()
会将浮点数舍入到最接近的整数。
(int)foo
更简单。
实际上,有多种方法可以将float转换为int,具体取决于您要实现的结果:(对于int i
,float f
)
舍入(最接近给定float的整数)
i = Math.round(f);
f = 2.0 -> i = 2 ; f = 2.22 -> i = 2 ; f = 2.68 -> i = 3
f = -2.0 -> i = -2 ; f = -2.22 -> i = -2 ; f = -2.68 -> i = -3
注意:根据合同,这等于 (int) Math.floor(f + 0.5f)
截断(即将所有内容都放在小数点后)
i = (int) f;
f = 2.0 -> i = 2 ; f = 2.22 -> i = 2 ; f = 2.68 -> i = 2
f = -2.0 -> i = -2 ; f = -2.22 -> i = -2 ; f = -2.68 -> i = -2
ceil / floor(整数,如果有小数部分,则始终大于/小于给定值)
i = (int) Math.ceil(f);
f = 2.0 -> i = 2 ; f = 2.22 -> i = 3 ; f = 2.68 -> i = 3
f = -2.0 -> i = -2 ; f = -2.22 -> i = -2 ; f = -2.68 -> i = -2
i = (int) Math.floor(f);
f = 2.0 -> i = 2 ; f = 2.22 -> i = 2 ; f = 2.68 -> i = 2
f = -2.0 -> i = -2 ; f = -2.22 -> i = -3 ; f = -2.68 -> i = -3
对于四舍五入正值,您也可以只使用(int)(f + 0.5)
,它Math.Round
在这种情况下(按doc)完全一样。
你也可以用Math.rint(f)
做四舍五入到最接近的偶数 ; 如果您希望处理小数部分严格等于.5的浮点数(请注意可能的IEEE舍入问题),并且希望将集合的平均值保持在适当位置,则可以说这很有用。您将引入另一个偏见,不过偶数比奇数更常见。
看到
http://mindprod.com/jgloss/round.html
http://docs.oracle.com/javase/6/docs/api/java/lang/Math.html
有关更多信息和一些示例。
Math.round(value)
将值四舍五入到最接近的整数。
采用
1) b=(int)(Math.round(a));
2) a=Math.round(a);
b=(int)a;
Math.round还返回整数值,因此您无需进行类型转换。
int b = Math.round(float a);
Math.round(value)
在将其强制转换为整数后使用。
float a = 8.61f;
int b = (int)Math.round(a);
对我来说,更容易:(int)(a +.5) // a是浮点数。返回舍入值。
不依赖于Java Math.round()类型