java Math.round()用法

MathUtil - 四舍五入

由于Java的float和double数值,在进行计算时,无法保证数据的精度,四舍五入的需要就迫切需要。 当然,用long再除以100也不错,但比较麻烦。 或采用BigDecimal也将会是一个比较好的选择,但其不可变的特性又使得计算中长生大量的垃圾对象。如果程序中需要进行计算,有想保持精度,那就使用一个四舍五入来处理吧。

 

这是一个个人编写的用于数值计算后四舍五入的小程序。

 

public class MathUtil   
{   
  public static int devide(int x, int y)   
  {   
    float f = x;   
    return Math.round(f / y);   
  }   
  
  public static long devide(long x, long y)   
  {   
    double d = x;   
    return Math.round(d / y);   
  }   
  
  public static float round(float f, int bit)   
  {   
    float p = (float)pow(bit);   
    return (Math.round(f * p) / p);   
  }   
  
  public static double round(double d, int bit)   
  {   
    double p = pow(bit);   
    return (Math.round(d * p) / p);   
  }   
  
  private static long pow(int bit)   
  {   
    return Math.round(Math.pow(10.0D, bit));   
  }   
}  

public class MathTest {   
    public static void main(String[] args) {   
        System.out.println("小数点后第一位=5");   
        System.out.println("正数:Math.round(11.5)=" + Math.round(11.5));   
        System.out.println("负数:Math.round(-11.5)=" + Math.round(-11.5));   
        System.out.println();   
  
        System.out.println("小数点后第一位<5");   
        System.out.println("正数:Math.round(11.46)=" + Math.round(11.46));   
        System.out.println("负数:Math.round(-11.46)=" + Math.round(-11.46));   
        System.out.println();   
  
        System.out.println("小数点后第一位>5");   
        System.out.println("正数:Math.round(11.68)=" + Math.round(11.68));   
        System.out.println("负数:Math.round(-11.68)=" + Math.round(-11.68));   
    }   
}  

运行结果:

1、小数点后第一位=5
2、正数:Math.round(11.5)=12
3、负数:Math.round(-11.5)=-11
4、
5、小数点后第一位<5
6、正数:Math.round(11.46)=11
7、负数:Math.round(-11.46)=-11
8、
9、小数点后第一位>5
10、正数:Math.round(11.68)=12
11、负数:Math.round(-11.68)=-12

根据上面例子的运行结果,我们还可以按照如下方式总结,或许更加容易记忆:

1、参数的小数点后第一位<5,运算结果为参数整数部分。
2、参数的小数点后第一位>5,运算结果为参数整数部分绝对值+1,符号(即正负)不变。
3、参数的小数点后第一位=5,正数运算结果为整数部分+1,负数运算结果为整数部分。

 

终结:大于五全部加,等于五正数加,小于五全不加。


你可能感兴趣的:(javase)