zoukankan      html  css  js  c++  java
  • 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 }

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

  • 相关阅读:
    沟通是项目管理知识体系中的九大知识领域之一
    项目管理的三要素时间、成本、质量
    项目管理提升效率的几大关键点
    收到FRDMKL02Z
    【转】arm 开发工具比较(ADS vs RealviewMDK vs RVDS)
    你不能自己把自己放弃写在毕业季
    【转】为什么你应该(从现在开始就)写博客
    Vivado 2014.4 FFT IP 使用及仿真
    项目需求的一些事
    娇荣电子工作室成立了
  • 原文地址:https://www.cnblogs.com/huzi007/p/4287881.html
Copyright © 2011-2022 走看看