zoukankan      html  css  js  c++  java
  • java金额的加减乘除

      1 package com.wedge.edp.framework.common.util;
      2 
      3 import java.math.BigDecimal;
      4 
      5 /**
      6  * 金额的加减乘除
      7  */
      8 public class MathMoney {
      9     private static final int DEF_DIV_SCALE = 10;
     10 
     11     //这个类不能实例化 
     12     private MathMoney() {
     13     }
     14 
     15     /** 
     16      * 提供精确的加法运算。 
     17      * @param v1 被加数 
     18      * @param v2 加数 
     19      * @return 两个参数的和 
     20      */
     21     public static String add(String v1, String v2) {
     22         BigDecimal b1 = new BigDecimal(v1);
     23         BigDecimal b2 = new BigDecimal(v2);
     24         return b1.add(b2).toString();
     25     }
     26 
     27     /** 
     28      * 提供精确的减法运算。 
     29      * @param v1 被减数 
     30      * @param v2 减数 
     31      * @return 两个参数的差 
     32      */
     33     public static String sub(String v1, String v2) {
     34         BigDecimal b1 = new BigDecimal(v1);
     35 
     36         BigDecimal b2 = new BigDecimal(v2);
     37 
     38         return b1.subtract(b2).toString();
     39     }
     40 
     41     /** 
     42      * 提供精确的乘法运算。 
     43      * @param v1 被乘数 
     44      * @param v2 乘数 
     45      * @return 两个参数的积 
     46      */
     47     public static String mul(String v1, String v2) {
     48         BigDecimal b1 = new BigDecimal(v1);
     49         BigDecimal b2 = new BigDecimal(v2);
     50         return b1.multiply(b2).toString();
     51     }
     52 
     53     /** 
     54      * 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到 
     55      * 小数点以后10位,以后的数字四舍五入。 
     56      * @param v1 被除数 
     57      * @param v2 除数 
     58      * @return 两个参数的商 
     59      */
     60     public static String div(String v1, String v2) {
     61         return div(v1, v2, DEF_DIV_SCALE);
     62     }
     63 
     64     /** 
     65      * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指 
     66      * 定精度,以后的数字四舍五入。 
     67      * @param v1 被除数 
     68      * @param v2 除数 
     69      * @param scale 表示表示需要精确到小数点以后几位。 
     70      * @return 两个参数的商 
     71      */
     72     public static String div(String v1, String v2, int scale) {
     73         if (scale < 0) {
     74             throw new IllegalArgumentException("The scale must be a positive integer or zero");
     75         }
     76         BigDecimal b1 = new BigDecimal(v1);
     77         BigDecimal b2 = new BigDecimal(v2);
     78         return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).toString();
     79     }
     80 
     81     /** 
     82      * 提供精确的小数位四舍五入处理。 
     83      * @param v 需要四舍五入的数字 
     84      * @param scale 小数点后保留几位 
     85      * @return 四舍五入后的结果 
     86      */
     87     public static String round(String v, int scale) {
     88         if (scale < 0) {
     89             throw new IllegalArgumentException("The scale must be a positive integer or zero");
     90         }
     91         BigDecimal b = new BigDecimal(v);
     92         BigDecimal one = new BigDecimal("1");
     93         return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).toString();
     94     }
     95 
     96     public static String[] average() {
     97         return null;
     98 
     99     }
    100 
    101 }
  • 相关阅读:
    礼物的最大价值
    复杂链表的复制
    全排列(回溯法)
    删除排序数组中的重复项
    三角形最小路径和(经典dp)
    链表中倒数第k个节点
    造成segment fault,产生core dump的可能原因
    wmpnetwk.exe怎么禁启动
    GSM/GPRS/EDGE/WCDMA/HSDPA/HSUPA--辨析
    OSI七层参考模型每一层都有哪些协议
  • 原文地址:https://www.cnblogs.com/tfgzs/p/3895546.html
Copyright © 2011-2022 走看看