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

如何應用Java的BigDecimal類

編輯:關於JAVA

5.8 BigDecimal類

雙精度浮點型變量double可以處理16位有效數。在實際應用中,需要對更大 或者更小的數進行運算和處理。Java在java.math包中提供的API類BigDecimal, 用來對超過16位有效位的數進行精確的運算。表5.7中列出了BigDecimal類的主 要構造器和方法。

表5.7 BigDecimal類的主要構造器和方法

構 造 器描 述

BigDecimal(int)創建一個具有參數所指定整數值的對象。

BigDecimal(double)創建一個具有參數所指定雙精度值的對象。

BigDecimal(long)創建一個具有參數所指定長整數值的對象。

BigDecimal(String)創建一個具有參數所指定以字符串表示的數值的對象。

續表

方 法描 述

add(BigDecimal)BigDecimal對象中的值相加,然後返回這個對象。

subtract(BigDecimal)BigDecimal對象中的值相減,然後返回這個對象。

multiply(BigDecimal)BigDecimal對象中的值相乘,然後返回這個對象。

divide(BigDecimal)BigDecimal對象中的值相除,然後返回這個對象。

toString()將BigDecimal對象的數值轉換成字符串。

doubleValue()將BigDecimal對象中的值以雙精度數返回。

floatValue()將BigDecimal對象中的值以單精度數返回。

longValue()將BigDecimal對象中的值以長整數返回。

intValue()將BigDecimal對象中的值以整數返回。

注意,由於一般數值類型,例如double,不能准確地代表16位有效數以上的 數字,在使用BigDecimal時,應用BigDecimal(String)構造器創建對象才有意義 。另外,BigDecimal所創建的是對象,我們不能使用傳統的+、-、*、/等算術運 算符直接對其對象進行數學運算,而必須調用其相對應的方法。方法中的參數也 必須是BigDecimal的對象。

構造器是類的特殊方法,專門用來創建對象,特別是帶有參數的對象。關於 構造器概念和編寫技術,將在本書第6章詳細介紹。

下面討論BigDecimal的一些常用例子:

 //完整程序例子在本書配套資源目錄Ch5中名為BigDecimalTestApp.java 
  //創建BigDecimal對象 
  BigDecimal bigNumber = new BigDecimal

("89.1234567890123456789"); 
  BigDecimal bigRate = new BigDecimal(1000); 
  BigDecimal bigResult = new BigDecimal(); //對象bigResult的值

為0.0 
  //對bigNumber的值乘以1000,結果 賦予bigResult 
  bigResult = bigNumber.multiply(bigRate); 
  System.out.println(bigResult.toString()); 
  //或者System.out.println(bigResult); 
  //顯示結果:89123.4567890123456789000 
  //以雙精度數返回bigNumber中的值 
  double dData = bigNumber.doubleValue(); 
  System.out.println(dData); //結果:89.12345678901235

注意使用方法doubleValue()將對象bigNumber中的值以雙精度數值返回時, 將丟失數據的准確性。使用其他方法,如xxxValue()時均存在這個問題,使用時 必須慎重。

<!--[if !vml]--><!--[endif]-->3W BigDecimal用來對超過16 有效位以上的數值進行運算和操作。所有的算術運算都通過調用其相應的方法進 行。 創建一個超過16有效位數的對象時,運用BigDecimal(String)才可避免丟 失數字的精確度。

5.9 BigDecimal和格式化

由於NumberFormat類的format()方法可以使用BigDecimal對象作為其參數, 可以利用BigDecimal對超出16位有效數字的貨幣值,百分值,以及一般數值進行 格式化控制。

以利用BigDecimal對貨幣和百分比格式化為例。首先,創建BigDecimal對象 ,進行BigDecimal的算術運算後,分別建立對貨幣和百分比格式化的引用,最後 利用BigDecimal對象作為format()方法的參數,輸出其格式化的貨幣值和百分比 ,即:

//完整程序例子在本書配套資源目錄Ch5中名為BigDecimalFormatApp.java 
  BigDecimal bigLoanAmount = new BigDecimal(loanAmountString); 
  //創建BigDecimal對象 
  BigDecimal bigInterestRate = new BigDecimal

(interestRateString); 
  BigDecimal bigInterest = bigLoanAmount.multiply

(bigInterestRate); 
  //BigDecimal運算 
  NumberFormat currency = NumberFormat.getCurrencyInstance(); 
  //建立貨幣格式化引用 
  NumberFormat percent = NumberFormat.getPercentInstance(); 
  //建立百分比格式化引用 
  percent.setMaximumFractionDigits(3); //百分比小數點最多3位 
  //利用BigDecimal對象作為參數在format()中調用貨幣和百分比格式化 
  System.out.println("Loan amount:\t" + currency.format

(bigLoanAmount)); 
  System.out.println("Interest rate:\t" + percent.format

(bigInterestRate)); 
  System.out.println("Interest:\t" + currency.format

(bigInterest));

如下是這個程序運行會的一個典型輸出結果:

Loan amount: ¥129,876,534,219,876,523.12

Interest rate: 8.765%

Interest: ¥11,384,239,549,149,661.69

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