Math类JDK中唯一一个专门的数学计算操作类。这里面有一些基础的数学计算函数,所在的包是:java.lang.Math.*
。
这个类提供了很多方法,都是用了static定义,可以通过类名称直接调用。其他的不多说了,主要说一下round的方法,实现四舍五入。
round方法实现四舍五入
该函数能够将小数转换成整数,并且四舍五入。示例如下:
public class MathDemo {
public static void main(String args[]){
System.out.println(Math.round(15.5)); //16
System.out.println(Math.round(15.51)); //16
System.out.println(Math.round(-15.5)); //-15
System.out.println(Math.round(-15.51)); //-16
}
}
观察上述代码会发现2个问题:
- round方法是对小数截断后四舍五入的,处理后就没有小数了。
- 对于小数位负数的处理比较特别:当小数部分大于等于-0.5,才会向下减一,否则即使是等于-0.5,也还是截断小数部分,不产生进位操作。
扩展:那么如何产生保留几位小数这样的操作呢?
原理: 由于round的操作是直接截断后四舍五入。以对234.211435要保留2位小数,那么比较好的办法就是对原来的数字乘100后截断,然后再除以100。按照这个思路,示例代码如下:
public class MathDemo {
public static double myRound(double num, int scale) {
return Math.round(num * Math.pow(10, scale)) / Math.pow(10, scale);
}
public static void main(String args[]) {
System.out.println(myRound(123.3213451,2));
}
}