当前位置:网站首页>Decimal工具类
Decimal工具类
2022-08-09 07:53:00 【CS打赢你】
package cn.xiaobawan.common.utils;
import java.math.BigDecimal;
import java.math.RoundingMode;
/**
* 数学工具类
*/
public class MathUtil {
/**
* 加法
*
* @param a 被加数
* @param b 加数
* @return 结果
*/
public static BigDecimal add(BigDecimal a, BigDecimal b) {
return a.add(b);
}
/**
* 减法
*
* @param a 被减数
* @param b 减数
* @return 结果
*/
public static BigDecimal subtract(BigDecimal a, BigDecimal b) {
return a.subtract(b);
}
/**
* 乘法
*
* @param a 被乘数
* @param b 乘数
* @return 结果
*/
public static BigDecimal multiply(BigDecimal a, BigDecimal b) {
return a.multiply(b);
}
/**
* 除法
*
* @param a 被除数
* @param b 除数
* @return 结果
*/
public static BigDecimal divide(BigDecimal a, BigDecimal b) {
if (0 == a.doubleValue()) { //被除数是零,结果一定为零
return new BigDecimal(0);
}
return a.divide(b, 8, RoundingMode.HALF_UP);
}
/**
* 超过8位就用科学计数法
*
* @param big 传进一个需要格式化的BigDecimal
* @return 返回格式化后字符串
*/
public static String formatData(BigDecimal big) {
String strAll = big.stripTrailingZeros().toPlainString();
int strLength = strAll.contains(".") ? strAll.length() - 1 : strAll.length();
if (strLength > 8) {
String string = big.stripTrailingZeros().toString();
if (string.contains("E")) {
int index = string.indexOf("E");
if ((string.charAt(index + 1) + "").equals("-")) {
return string;
} else {
return new StringBuilder().append(string.substring(0, index + 1))
.append(string.substring(index + 2, string.length())).toString();
}
} else {
return string;
}
} else {
return strAll;
}
}
/**
* 保留小数点后面几位
*
* @param big
* @param bit 要保留的位数
* @return
*/
public static BigDecimal formatKeepDigits(BigDecimal big, int bit) {
return big.setScale(bit, BigDecimal.ROUND_HALF_UP);
}
}
有参考网络一些文章,如有雷同,纯属巧合。
边栏推荐
猜你喜欢
【Rust指南】快速入门|开发环境|hello world
Four departments including the Ministry of Industry and Information Technology promote green smart home products to the countryside
Oracle 限制时将空值排除
弹性盒样式、移动端、VW适配、响应式布局
MDK Keil debug时, watch1中全局变量不更新
【模板】树链剖分 P3384
环形链表问题(判环、求入口点)
(三)、时间序列预测
SAP ALV 数据导出被截断的bug
jmeter并发数量以及压力机的一些限制
随机推荐
[STL]vector
Flexible and easy-to-use sql monitoring script part7
2017 G icpc shenyang Infinite Fraction Path BFS + pruning
差分约束-图论
Luogu P1110 report statistics multiset stl good question
CoCube传感器MPU6050笔记
MUV LUV EXTRA 2019CCPC Qinhuangdao Station J Question KMP
resourcemanager启动失败,别的节点成功
环形链表问题(判环、求入口点)
libtorch示例
Pytorch 训练技巧
在今天这个特殊的日子,我想要开始我的代码技术博客之路
权限(下)
tianqf's problem-solving ideas
2019南昌网络赛 C题,Hello 2019
C语言:调整奇数偶数顺序
HDU - 3183 A Magic Lamp Segment Tree
定时任务组件Quartz
ncnn 推理猫狗识别
软件测试的岗位会越来越少吗?