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 }

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

  • 相关阅读:
    To select the file to upload we can use the standard HTML input control of type
    Cascading Menu Script using Javascript Explained
    网站首页head区代码规范
    轻松掌握 Java 泛型
    JDK 5.0 中的泛型类型学习
    如何在firefox下获取下列框选中option的text
    是同步方法还是 synchronized 代码? 详解多线程同步规则
    javascript select option对象总结
    Select的动态取值(Text,value),添加,删除。兼容IE,FireFox
    javascript在ie和firefox下的一些差异
  • 原文地址:https://www.cnblogs.com/huzi007/p/4287881.html
Copyright © 2011-2022 走看看