程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java中BigDecimal的操作辦法

java中BigDecimal的操作辦法

編輯:關於JAVA

java中BigDecimal的操作辦法。本站提示廣大學習愛好者:(java中BigDecimal的操作辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是java中BigDecimal的操作辦法正文


本文實例講述了java中BigDecimal的操作辦法。分享給年夜家供年夜家參考。詳細剖析以下:

因為double,float的精度不敷,是以在停止貿易盤算的時刻要應用的BigDecimal。BigDecimal對象創立以下:
BigDecimal b = new BigDecimal("12.000001");
System.out.println(b);
輸入成果為:12.000001;

BigDecimal在創立的時刻可以傳入String和double,然則最好應用String,至於緣由看看以下代碼就曉得了:
BigDecimal b = new BigDecimal("12.000001");
System.out.println(b);
BigDecimal c = new BigDecimal(12.01);
System.out.println(c);
運轉成果為:

12.000001
12.0099999999999997868371792719699442386627197265625

可以看出在傳入double的時刻精度會喪失。

BigDecimal其他操作以下:

    //加法
    public static BigDecimal add(String num1, String num2) {
        BigDecimal bd1 = new BigDecimal(num1);
        BigDecimal bd2 = new BigDecimal(num2);
        return bd1.add(bd2);
    }
 
    //減法
    public static BigDecimal subtract(String num1, String num2) {
        BigDecimal bd1 = new BigDecimal(num1);
        BigDecimal bd2 = new BigDecimal(num2);
        return bd1.subtract(bd2);
    }
 
    //乘法
    public static BigDecimal multiply(String num1, String num2) {
        BigDecimal bd1 = new BigDecimal(num1);
        BigDecimal bd2 = new BigDecimal(num2);
        return bd1.multiply(bd2);
    }
 
    //除法
    public static BigDecimal divide(String num1, String num2, int i) {
        BigDecimal bd1 = new BigDecimal(num1);
        BigDecimal bd2 = new BigDecimal(num2);
        // i是要保存的位數, BigDecimal.ROUND_HALF_UP 表現四捨五入的規矩
        return bd1.divide(bd2, i, BigDecimal.ROUND_HALF_DOWN); 
    }

須要強調一下除法,第三個參數為能否四捨五入,

ROUND_HALF_DOWN表現遇5不進1,即1.5->1;
ROUND_HALF_UP表現遇5進1,即1.5->2;

然則有點須要留意:
當我們應用ROUND_HALF_DOWN時
System.out.println(this.divide("67.75", "5",4));
System.out.println(this.divide("67.75", "5",1));
System.out.println("-------");
System.out.println(this.divide("67.751", "5",4));
System.out.println(this.divide("67.751", "5",1));
運轉成果以下:

13.5500
13.5
-------
13.5502
13.6

我就疑惑了,按事理第二個成果應當是13.5啊!怎樣成了13.6。後來經由屢次測試,想了一下,這個四捨五入不是依照精度位前面移位與5做比擬,而是依照精度位後的一切的數據與5做比擬,也就是說:13.5500准確到一名,則用0.0500與5比擬,而13.5502准確到一名,則用0.0502與5比擬,比5年夜,所以就向上收。

願望本文所述對年夜家的Java法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved