最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java BigDecimal使用方法詳解

 更新時間:2022年12月20日 09:33:10   作者:碼畜c  
Java在java.math包中提供的API類BigDecimal,用來對超過16位有效位的數(shù)進行精確的運算。雙精度浮點型變量double可以處理16位有效數(shù),但在實際應(yīng)用中,可能需要對更大或者更小的數(shù)進行運算和處理

重要屬性

1、scale: 小數(shù)點后的位數(shù)。如將1.234構(gòu)建為BigDecimal,scale屬性則為3

2、RoundingMode(對照數(shù)軸上正負數(shù)、0的位置分布):

小數(shù)的保留模式。在計算除法時,當(dāng)商的小數(shù)位過多,想保留指定的位數(shù)時使用?;蛘呱虨闊o限循環(huán)小數(shù)時,若不指定RoundingMode則會發(fā)生異常。

  • UP: 正數(shù)向右增長,負數(shù)向左增長
  • DOWN: 正數(shù)向左增長,負數(shù)向右增長 (理解為直接忽略其余小數(shù)位)
  • CEILING: 正負數(shù)全部向右增長
  • FLOOR: 正負數(shù)全部向左增長
  • HALF_UP: 四舍五入
  • HALF_DOWN: 四舍六入
  • HALF_EVEN: 四舍五入,當(dāng)為5時,判斷前一位的奇偶性。奇數(shù)進位,偶數(shù)不進位

3、例子

BigDecimal bigDecimal = new BigDecimal("1.555");
bigDecimal = bigDecimal.setScale(2, RoundingMode.HALF_UP);
System.out.println(bigDecimal); // 1.56

Double 轉(zhuǎn) BigDecimal

  • 最好將一個字符串作為構(gòu)造參數(shù),這樣創(chuàng)建的BigDecimal是可預(yù)知、準確的
  • 對于double類型的數(shù)據(jù),不能使用一個double作為構(gòu)造參數(shù),可以通過Double.toString()轉(zhuǎn)為String后通過構(gòu)造器進行創(chuàng)建。或使用BigDecimal.valueOf(double d) 方法,該方法內(nèi)部也是調(diào)用的Double.toString
new BigDecimal(Double.toString(0.1D));
BigDecimal.valueOf(0.1D);

基礎(chǔ)方法

1. add

BigDecimal res = new BigDecimal("1.23").add(new BigDecimal("1.23"))

2. subtract

BigDecimal res = new BigDecimal("1.23").subtract(BigDecimal.valueOf(0.23D))

3. multiply

BigDecimal res = BigDecimal.valueOf(2.2D).multiply(BigDecimal.valueOf(2.2D))

4. divide

BigDecimal res = BigDecimal.valueOf(10.0D)
   .divide(BigDecimal.valueOf(3.0D), 2, RoundingMode.DOWN); // 3.33

數(shù)值比較

不要使用 equals 方法進行比較,使用compareTo方法進行比較。equals 方法會比較兩個數(shù)字的精度,compareTo 方法則只會比較數(shù)值的大小

BigDecimal b1 = new BigDecimal("1.0");
BigDecimal b2 = new BigDecimal("1.00");
System.out.println(b1.equals(b2)); // false
System.out.println(b1.compareTo(b2) == 0); // true

剔除尾部的零

BigDecimal bigDecimal = new BigDecimal("100.0");
System.out.println(bigDecimal); // 100.0
System.out.println(bigDecimal.toPlainString()); // 100.0
// 1. stripTrailingZeros: 去除尾部的0, 但是除數(shù)結(jié)果可能會為科學(xué)計數(shù)法格式的數(shù)值. 如: 1e+2(1 * 10 ^ 2)
System.out.println(bigDecimal.stripTrailingZeros()); // 1E+2
// 2. toPlainString: 不使用指數(shù)形式的輸出, 就是單純的數(shù)值.
System.out.println(bigDecimal.stripTrailingZeros().toPlainString()); // 100

到此這篇關(guān)于Java BigDecimal使用方法詳解的文章就介紹到這了,更多相關(guān)Java BigDecimal內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

建瓯市| 枝江市| 无棣县| 靖宇县| 陆丰市| 循化| 祥云县| 革吉县| 青海省| 调兵山市| 高青县| 邳州市| 类乌齐县| 绥江县| 许昌市| 翁牛特旗| 新和县| 哈巴河县| 穆棱市| 福州市| 聂拉木县| 抚州市| 嘉峪关市| 丁青县| 塘沽区| 庆元县| 宣恩县| 天津市| 双柏县| 黄陵县| 博乐市| 永春县| 比如县| 涪陵区| 邵阳县| 陕西省| 滕州市| 如皋市| 积石山| 柞水县| 突泉县|