91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在Java中使用BigDecimal進行運算封裝

發布時間:2021-06-08 17:07:11 來源:億速云 閱讀:242 作者:Leah 欄目:編程語言

本篇文章給大家分享的是有關如何在Java中使用BigDecimal進行運算封裝,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

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>

以上就是如何在Java中使用BigDecimal進行運算封裝,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

久治县| 古蔺县| 镇沅| 定日县| 松江区| 崇州市| 天门市| 磐安县| 昔阳县| 舒城县| 凤山市| 湘乡市| 台中市| 宜都市| 岗巴县| 太仆寺旗| 平安县| 建瓯市| 越西县| 淳安县| 平果县| 苗栗县| 康乐县| 左云县| 松江区| 淮阳县| 西林县| 泾阳县| 开远市| 义马市| 肥城市| 大同市| 雅江县| 平顶山市| 乐安县| 耿马| 米易县| 临西县| 阆中市| 庆安县| 天祝|