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函数