麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > Java > 正文

Java使用BigDecimal進行運算封裝的實際案例

2024-07-14 08:43:05
字體:
來源:轉載
供稿:網友

日常對于金額計算,應該都是用的BigDecimal,可是苦于沒有好的工具類方法,現在貢獻一個我正在用的對于數字計算的工具類,項目中就是用的這個,簡單粗暴好用,話不多說,代碼奉上(該工具類需要引入google的一個jar,com.google.common.base.Optional,具體maven引入看文章末尾):

import java.math.BigDecimal;public class NumberArithmeticUtils { /** * BigDecimal的加法運算封裝 * @param b1 * @param bn * @return */ public static BigDecimal safeAdd(BigDecimal b1, BigDecimal... bn) { if (null == b1) {  b1 = BigDecimal.ZERO; } if (null != bn) {  for (BigDecimal b : bn) {  b1 = b1.add(null == b ? BigDecimal.ZERO : b);  } } return b1; } /** * Integer加法運算的封裝 * @param b1 第一個數 * @param bn 需要加的加法數組 * @注 : Optional 是屬于com.google.common.base.Optional<T> 下面的class * @return */ public static Integer safeAdd(Integer b1, Integer... bn) { if (null == b1) {  b1 = 0; } Integer r = b1; if (null != bn) {  for (Integer b : bn) {  r += Optional.fromNullable(b).or(0);  } } return r > 0 ? r : 0; } /** * 計算金額方法 * @param b1 * @param bn * @return */ public static BigDecimal safeSubtract(BigDecimal b1, BigDecimal... bn) { return safeSubtract(true, b1, bn); } /** * BigDecimal的安全減法運算 * @param isZero 減法結果為負數時是否返回0,true是返回0(金額計算時使用),false是返回負數結果 * @param b1 被減數 * @param bn 需要減的減數數組 * @return */ public static BigDecimal safeSubtract(Boolean isZero, BigDecimal b1, BigDecimal... bn) { if (null == b1) {  b1 = BigDecimal.ZERO; } BigDecimal r = b1; if (null != bn) {  for (BigDecimal b : bn) {  r = r.subtract((null == b ? BigDecimal.ZERO : b));  } } return isZero ? (r.compareTo(BigDecimal.ZERO) == -1 ? BigDecimal.ZERO : r) : r; } /** * 整型的減法運算,小于0時返回0 * @param b1 * @param bn * @return */ public static Integer safeSubtract(Integer b1, Integer... bn) { if (null == b1) {  b1 = 0; } Integer r = b1; if (null != bn) {  for (Integer b : bn) {  r -= Optional.fromNullable(b).or(0);  } } return null != r && r > 0 ? r : 0; } /** * 金額除法計算,返回2位小數(具體的返回多少位大家自己看著改吧) * @param b1 * @param b2 * @return */ public static <T extends Number> BigDecimal safeDivide(T b1, T b2){ return safeDivide(b1, b2, BigDecimal.ZERO); } /** * BigDecimal的除法運算封裝,如果除數或者被除數為0,返回默認值 * 默認返回小數位后2位,用于金額計算 * @param b1 * @param b2 * @param defaultValue * @return */ public static <T extends Number> BigDecimal safeDivide(T b1, T b2, BigDecimal defaultValue) { if (null == b1 || null == b2) {  return defaultValue; } try {  return BigDecimal.valueOf(b1.doubleValue()).divide(BigDecimal.valueOf(b2.doubleValue()), 2, BigDecimal.ROUND_HALF_UP); } catch (Exception e) {  return defaultValue; } } /** * BigDecimal的乘法運算封裝 * @param b1 * @param b2 * @return */ public static <T extends Number> BigDecimal safeMultiply(T b1, T b2) { if (null == b1 || null == b2) {  return BigDecimal.ZERO; } return BigDecimal.valueOf(b1.doubleValue()).multiply(BigDecimal.valueOf(b2.doubleValue())).setScale(2, BigDecimal.ROUND_HALF_UP); }}

Optional所在的jar以及版本:guava-18.0.ar

pom.xml配置:

<!-- https://mvnrepository.com/artifact/com.google.guava/guava --><dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>18.0</version></dependency>

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 九九热精品视频在线免费观看 | 欧美性生交xxxxx免费观看 | 欧美女优一区 | hdhdhdhd19日本人 | 国产91精品久久久久久久 | 成人毛片视频免费看 | 国产精品久久久久久久久久三级 | 成人福利在线免费观看 | 一区二区国产在线 | 高清av在线 | 黄在线免费看 | 中文在线国产 | 国产亚洲精品美女久久久 | 天堂成人一区二区三区 | 91在线色| 欧美人的天堂一区二区三区 | 欧美一级在线看 | 国产精品久久久毛片 | 天天干天天碰 | 曰批全过程40分钟免费视频多人 | 久久免费综合视频 | 羞羞的视频免费观看 | 成人毛片免费看 | 黄视频免费在线观看 | 免费国产人成网站 | 伊人99在线 | 在线看一区二区三区 | 性爱网站 | 免费在线中文字幕 | 欧美成人黄色片 | a黄色片 | 成人男男视频拍拍拍在线观看 | av在线免费网 | 99精彩视频在线观看 | 国产精品免费小视频 | 性少妇videosexfreexx入片 | 一级毛片电影院 | 国产91大片| 亚洲第一成人久久网站 | 久久99国产精品久久 | 亚洲99|