• 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 }
  • 相关阅读:
    如何理解Stand SPI Dual SPI 和Quad SPI??
    一款很实用的欠压过压保护电路
    AbpZero之企业微信登录(拓展第三方auth授权登录)第三步:需要注意事项
    在AbpZero中hangfire后台作业的使用——开启hangfire
    AbpZero之企业微信登录(拓展第三方auth授权登录)第一步:查看AbpZero的auth第三方登录的底层机制
    在AbpZero中hangfire后台作业的使用——hangfire的调度
    AbpZero后台模块化(1)
    AbpZero之企业微信登录(拓展第三方auth授权登录)第二步:开始逐步实现企业微信登录
    vue基础(入门视频零基础精华总结)
    组件参数校验与非props特性
  • 原文地址:https://www.cnblogs.com/tfgzs/p/3895546.html
Copyright © 2020-2023  润新知