float a=3.335f;
System.out.println(Math.round(a*100)/100.00);
Math.round(100.5f)结果应该是多少?101,没错!
Math.round(-100.5f)呢?-101,错了,是-100。
不可思议吧,看看API说明:
Returns the closest int to the argument. The result is rounded
to an integer by adding 1/2, taking the floor of the result, and casting the
result to type int. In other words, the result is equal to the
value of the expression:
(int)Math.floor(a + 0.5f);
Sun也太偷懒了,-100.5f +
0.5f不等于-100才怪。只能写个判断了,先取正数值再取负:
if (num < 0) {
return -Math.round(-num);
}
return Math.round(num);
以下是其他语言的运行结果:
Javascript: Math.round(-100.5) =>
-100 (一脉相承!)
VBScript: Round(-100.5) => -100 (Round(100.5) =
100,噗~~)
Excel:=ROUND(-100.5, 0) => -101
Ruby: (-100.5).round =>
-101
Lua: 无round函数
1万+

被折叠的 条评论
为什么被折叠?



