随笔 - 1357  文章 - 0  评论 - 1104  阅读 - 1941万

精确计算工具类,提供加减乘除的计算

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
package com.ljq.durian.common.util;
 
import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;
 
/**
 * 精确计算工具类,提供加减乘除的计算
 *
 * @author jqlin
 */
public class CompuUtils {
    /** 常量--0 */
    public static final int ZERO = 0;
    /** 常量--1 */
    public static final int ONE = 1;
    /** 常量-- -1 */
    public static final int MINUS_ONE = -1;
 
 
    /**
     * 大小比较
     *
     * @param a
     * @param b
     * @return 返回1, 表示a大于b <br/>
     *         返回0 ,表示a等于b <br/>
     *         返回-1,表示a小于b
     * @author jqlin
     */
    public static int compareTo(String a, String b) {
        return new BigDecimal(a).compareTo(new BigDecimal(b));
    }
 
    /**
     * 加法运算
     *
     * @param a 被加数
     * @param b 加数
     * @author jqlin
     */
    public static BigDecimal add(String a, String b) {
        MathContext mc = new MathContext(20, RoundingMode.HALF_UP);
        return new BigDecimal(a).add(new BigDecimal(b), mc);
    }
 
    /**
     * 累加运算
     *
     * @param vals
     * @return
     * @author jqlin
     */
    public static int add(int... vals) {
        if (vals == null || vals.length <= 0) {
            return 0;
        }
 
        int sum = 0;
        for (int val : vals) {
            sum = sum + val;
        }
 
        return sum;
    }
 
    /**
     * 累加运算
     *
     * @param vals
     * @return
     * @author jqlin
     */
    public static long add(long... vals) {
        if (vals == null || vals.length <= 0) {
            return 0L;
        }
 
        long sum = 0L;
        for (long val : vals) {
            sum = sum + val;
        }
 
        return sum;
    }
 
    /**
     * 减法运算
     *
     * @param a 被减数
     * @param b 减数
     * @author jqlin
     */
    public static BigDecimal subtract(String a, String b) {
        MathContext mc = new MathContext(20, RoundingMode.HALF_UP);
        return new BigDecimal(a).subtract(new BigDecimal(b), mc);
    }
 
    /**
     * 乘法运算
     *
     * @param a 被乘数
     * @param b 乘数
     * @author jqlin
     */
    public static BigDecimal multiply(String a, String b) {
        MathContext mc = new MathContext(20, RoundingMode.HALF_UP);
        return new BigDecimal(a).multiply(new BigDecimal(b), mc);
    }
 
    /**
     * 除法运算
     *
     * @param a 被除数
     * @param b 除数
     * @author jqlin
     */
    public static BigDecimal divide(String a, String b) {
        return new BigDecimal(a).divide(new BigDecimal(b), 20, BigDecimal.ROUND_HALF_UP);
    }
 
    public static void main(String[] args) {
        System.out.println(divide("10", "4"));
    }
}

  

posted on   Ruthless  阅读(2209)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
历史上的今天:
2012-06-01 ibatis注意要点
2011-06-01 十七、Android无法访问本地服务器(localhost)的解决方案
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示