java四舍五入。

 

 

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

 

你可能感兴趣的:(java)