• java double相加


     1 public class DoubleUtil {
     2     private static final int DEF_DIV_SCALE = 10;
     3 
     4     /**
     5      * 相加
     6      *
     7      * @param d1
     8      * @param d2
     9      * @return
    10      */
    11     public static double sum(double d1, double d2) {
    12         BigDecimal bd1 = new BigDecimal(Double.toString(d1));
    13         BigDecimal bd2 = new BigDecimal(Double.toString(d2));
    14         return bd1.add(bd2).doubleValue();
    15     }
    16 
    17 
    18     /**
    19      * 提供精确的减法运算。
    20      *
    21      * @param v1 被减数
    22      * @param v2 减数
    23      * @return 两个参数的差
    24      */
    25     public static double sub(double v1, double v2) {
    26         BigDecimal b1 = new BigDecimal(Double.toString(v1));
    27         BigDecimal b2 = new BigDecimal(Double.toString(v2));
    28         return b1.subtract(b2).doubleValue();
    29     }
    30 
    31     /**
    32      * 提供精确的乘法运算。
    33      *
    34      * @param v1 被乘数
    35      * @param v2 乘数
    36      * @return 两个参数的积
    37      */
    38     public static double mul(double v1, double v2) {
    39         BigDecimal b1 = new BigDecimal(Double.toString(v1));
    40         BigDecimal b2 = new BigDecimal(Double.toString(v2));
    41         return b1.multiply(b2).doubleValue();
    42     }
    43 
    44     /**
    45      * 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到 小数点以后10位,以后的数字四舍五入。
    46      *
    47      * @param v1 被除数
    48      * @param v2 除数
    49      * @return 两个参数的商
    50      */
    51     public static double div(double v1, double v2) {
    52         return div(v1, v2, DEF_DIV_SCALE);
    53     }
    54 
    55     /**
    56      * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指 定精度,以后的数字四舍五入。
    57      *
    58      * @param v1    被除数
    59      * @param v2    除数
    60      * @param scale 表示表示需要精确到小数点以后几位。
    61      * @return 两个参数的商
    62      */
    63     public static double div(double v1, double v2, int scale) {
    64         if (scale < 0) {
    65             throw new IllegalArgumentException(
    66                     "The scale must be a positive integer or zero");
    67         }
    68         BigDecimal b1 = new BigDecimal(Double.toString(v1));
    69         BigDecimal b2 = new BigDecimal(Double.toString(v2));
    70         return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
    71     }
    72 
    73     /**
    74      * 提供精确的小数位四舍五入处理。
    75      *
    76      * @param v     需要四舍五入的数字
    77      * @param scale 小数点后保留几位
    78      * @return 四舍五入后的结果
    79      */
    80     public static double round(double v, int scale) {
    81         if (scale < 0) {
    82             throw new IllegalArgumentException(
    83                     "The scale must be a positive integer or zero");
    84         }
    85         BigDecimal b = new BigDecimal(Double.toString(v));
    86         BigDecimal one = new BigDecimal("1");
    87         return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
    88     }
    89 
    90 
    91 }
  • 相关阅读:
    WebView loadData乱码问题
    记录常用工具
    android toolbar学习
    百度地图V5.0地图定位
    JS调JAVA代码
    开始使用Android Stdio
    记录下平时看到的好句子
    开发者必备网址
    android:ellipsize实现跑马灯效果总结
    seo查询命令
  • 原文地址:https://www.cnblogs.com/zhouweidong/p/7028143.html
Copyright © 2020-2023  润新知