Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
H
HYH.APSJ
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
佟礼
HYH.APSJ
Commits
fb073845
Commit
fb073845
authored
Nov 27, 2025
by
DESKTOP-VKRD9QF\Administration
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
计算
parent
45635332
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
101 additions
and
0 deletions
+101
-0
BigDecimalUtil.java
src/main/java/com/aps/common/util/BigDecimalUtil.java
+101
-0
No files found.
src/main/java/com/aps/common/util/BigDecimalUtil.java
0 → 100644
View file @
fb073845
package
com
.
aps
.
common
.
util
;
import
java.math.BigDecimal
;
import
java.math.RoundingMode
;
/**
* BigDecimal 运算工具类
*/
public
class
BigDecimalUtil
{
// 默认精度(小数点后4位)
private
static
final
int
DEFAULT_SCALE
=
4
;
// 默认舍入模式
private
static
final
RoundingMode
DEFAULT_ROUNDING_MODE
=
RoundingMode
.
HALF_UP
;
/**
* 安全加法(处理null值)
*/
public
static
BigDecimal
safeAdd
(
BigDecimal
num1
,
BigDecimal
num2
)
{
num1
=
defaultIfNull
(
num1
);
num2
=
defaultIfNull
(
num2
);
return
num1
.
add
(
num2
);
}
/**
* 安全减法
*/
public
static
BigDecimal
safeSubtract
(
BigDecimal
num1
,
BigDecimal
num2
)
{
num1
=
defaultIfNull
(
num1
);
num2
=
defaultIfNull
(
num2
);
return
num1
.
subtract
(
num2
);
}
/**
* 安全乘法
*/
public
static
BigDecimal
safeMultiply
(
BigDecimal
num1
,
BigDecimal
num2
)
{
num1
=
defaultIfNull
(
num1
);
num2
=
defaultIfNull
(
num2
);
return
num1
.
multiply
(
num2
);
}
/**
* 安全乘法(带精度)
*/
public
static
BigDecimal
safeMultiply
(
BigDecimal
num1
,
BigDecimal
num2
,
int
scale
)
{
BigDecimal
result
=
safeMultiply
(
num1
,
num2
);
return
result
.
setScale
(
scale
,
DEFAULT_ROUNDING_MODE
);
}
/**
* 安全除法
*/
public
static
BigDecimal
safeDivide
(
BigDecimal
numerator
,
BigDecimal
denominator
)
{
return
safeDivide
(
numerator
,
denominator
,
DEFAULT_SCALE
);
}
/**
* 安全除法(指定精度)
*/
public
static
BigDecimal
safeDivide
(
BigDecimal
numerator
,
BigDecimal
denominator
,
int
scale
)
{
numerator
=
defaultIfNull
(
numerator
);
denominator
=
defaultIfNull
(
denominator
);
if
(
denominator
.
compareTo
(
BigDecimal
.
ZERO
)
==
0
)
{
throw
new
ArithmeticException
(
"除数不能为零"
);
}
return
numerator
.
divide
(
denominator
,
scale
,
DEFAULT_ROUNDING_MODE
);
}
/**
* 比较大小
*/
public
static
boolean
isGreaterThan
(
BigDecimal
num1
,
BigDecimal
num2
)
{
num1
=
defaultIfNull
(
num1
);
num2
=
defaultIfNull
(
num2
);
return
num1
.
compareTo
(
num2
)
>
0
;
}
public
static
boolean
isLessThan
(
BigDecimal
num1
,
BigDecimal
num2
)
{
num1
=
defaultIfNull
(
num1
);
num2
=
defaultIfNull
(
num2
);
return
num1
.
compareTo
(
num2
)
<
0
;
}
public
static
boolean
equals
(
BigDecimal
num1
,
BigDecimal
num2
)
{
num1
=
defaultIfNull
(
num1
);
num2
=
defaultIfNull
(
num2
);
return
num1
.
compareTo
(
num2
)
==
0
;
}
/**
* 处理null值
*/
private
static
BigDecimal
defaultIfNull
(
BigDecimal
value
)
{
return
value
!=
null
?
value
:
BigDecimal
.
ZERO
;
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment