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 {
}
运行结果:
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,负数运算结果为整数部分。
终结:大于五全部加,等于五正数加,小于五全不加。