当前位置:网站首页>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);
}
}
有参考网络一些文章,如有雷同,纯属巧合。
边栏推荐
猜你喜欢
随机推荐
环形链表问题(判环、求入口点)
C language: adjust the order of odd and even numbers
低成本、大容量、高交互…Polkadot 引领 GameFi 实现新突破
Lottie系列三 :原理分析
Unity first lesson
Forest Program DFS + tanjar cactus
【机器学习】支持向量机(SVM)代码练习
oracle存储过程问题解答
转换为onnx模型错误汇总
ssh:connect to host master port 22:Network is unreachable
tianqf's problem-solving ideas
【Rust指南】快速入门|开发环境|hello world
(error) NOAUTH Authentication required.
PyTorch中 torch.nn与torch.nn.functional的区别
C language: reverse character order
Kotlin Coroutines - Exception Handling
C语言:字符逆序
VOC format label to YOLO format
One-click login server script
JSONObject遍历的时候顺序不一致,导致数据对应出错