java浮点类型计算

java浮点类型需要采用java.math.*这个工具包,这样的计算结果才是我们想要的。呵呵

  1 import java.math.BigDecimal;
  2 import java.text.NumberFormat;
  3 
  4 
  5 /**
  6  * 数学计算类
  7  * @author mingge
  8  *
  9  */
 10 public class ArithUtil {
 11 
 12     private ArithUtil(){
 13         
 14     }
 15     
 16     /**
 17      * 浮点数加法
 18      * @param num1
 19      * @param num2
 20      * @return
 21      */
 22     public static double add(double num1,double num2){
 23         BigDecimal v1=BigDecimal.valueOf(num1);
 24         BigDecimal v2=BigDecimal.valueOf(num2);
 25         return v1.add(v2).doubleValue();
 26     }
 27     
 28     /**
 29      * 浮点数减法
 30      * @param num1
 31      * @param num2
 32      * @return
 33      */
 34     public static double sub(double num1,double num2){
 35         BigDecimal v1=BigDecimal.valueOf(num1);
 36         BigDecimal v2=BigDecimal.valueOf(num2);
 37         return v1.subtract(v2).doubleValue();
 38     }
 39     
 40     /**
 41      * 两个数乘法
 42      * @param num1
 43      * @param num2
 44      * @return
 45      */
 46     public static double mul(double num1,double num2){
 47         BigDecimal v1=BigDecimal.valueOf(num1);
 48         BigDecimal v2=BigDecimal.valueOf(num2);
 49         return v1.multiply(v2).doubleValue();
 50     }
 51     
 52     /**
 53      * 两个数的除法,除不尽四舍五入
 54      * @param num1
 55      * @param num2
 56      * @param scale
 57      * @return
 58      */
 59     public static double div(double num1,double num2,int scale){
 60         if (scale<0) {
 61             throw new IllegalArgumentException("参数异常。。。");
 62         }
 63         BigDecimal v1=BigDecimal.valueOf(num1);
 64         BigDecimal v2=BigDecimal.valueOf(num2);
 65         return v1.divide(v2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
 66     }
 67     
 68     
 69     /**
 70      * 保留两位小数
 71      * @return
 72      */
 73     public static double changeTwoDecimal(double d){
 74         NumberFormat nf =NumberFormat.getNumberInstance();
 75         nf.setMaximumFractionDigits(2);
 76         return Double.valueOf(nf.format(d));
 77     }
 78 
 79     /**
 80      * 保留指定位数
 81      * @param d
 82      * @param scale
 83      * @return
 84      */
 85     public static double changeDecimal(double d,int scale){
 86         BigDecimal bg = new BigDecimal(d);
 87         double value = bg.setScale(scale, BigDecimal.ROUND_HALF_UP).doubleValue();
 88         return value;
 89         
 90     }
 91     
 92     
 93     
 94     
 95     
 96     public static void main(String[] args) {
 97         System.out.println(ArithUtil.changeTwoDecimal(5.60));
 98         System.out.println(ArithUtil.changeDecimal(6.356d, 5));
 99     }
100     
101     
102     
103     
104 }

这个工具类暂时写到这里,还有待继续优化...知识经济就是不停得进步吧

原文地址:https://www.cnblogs.com/huzi007/p/4287881.html