日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

4、大数字运算(BigInteger类和BigDecimal类)

發布時間:2025/3/20 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 4、大数字运算(BigInteger类和BigDecimal类) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在 Java 中提供了用于大數字運算的類,即 java.math.BigInteger 類和 java.math.BigDecimal 類。這兩個類用于高精度計算,其中 BigInteger 類是針對整型大數字的處理類,而 BigDecimal 類是針對大小數的處理類。

BigInteger 類

如果要存儲比 Integer 更大的數字,Integer 數據類型就無能為力了。因此,Java 中提供 BigInteger 類來處理更大的數字。

BigInteger 類型的數字范圍較 Integer 類型的數字范圍要大得多。BigInteger 支持任意精度的整數,也就是說在運算中 BigInteger 類型可以準確地表示任何大小的整數值。

除了基本的加、減、乘、除操作之外,BigInteger 類還封裝了很多操作,像求絕對值、相反數、最大公約數以及判斷是否為質數等。

要使用 BigInteger 類,首先要創建一個 BigInteger 對象。BigInteger 類提供了很多種構造方法,其中最直接的一種是參數以字符串形式代表要處理的數字。這個方法語法格式如下:

BigInteger(String val)

這里的 val 是數字十進制的字符串。例如,要將數字 5 轉換為 BigInteger 對象,語句如下:

BigInteger bi = new BigInteger("5")

注意:這里數字 5 的雙引號是必需的,因為 BigInteger 類構造方法要求參數是字符串類型。

創建 BigInteger 對象之后,便可以調用 BigInteger 類提供的方法進行各種數學運算操作,表 1 列出了 BigInteger 類的常用運算方法。

方法名稱說明
add(BigInteger val)做加法運算
subtract(BigInteger val)做減法運算
multiply(BigInteger val)做乘法運算
divide(BigInteger val)做除法運算
remainder(BigInteger val)做取余數運算
divideAndRemainder(BigInteger val)做除法運算,返回數組的第一個值為商,第二個值為余數
pow(int exponent)做參數的 exponent 次方運算
negate()取相反數
shiftLeft(int n)將數字左移 n 位,如果 n 為負數,則做右移操作
shiftRight(int n)將數字右移 n 位,如果 n 為負數,則做左移操作
and(BigInteger val)做與運算
or(BigInteger val)做或運算
compareTo(BigInteger val)做數字的比較運算
equals(Object obj)當參數 obj 是 Biglnteger 類型的數字并且數值相等時返回 true, 其他返回 false
min(BigInteger val)返回較小的數值
max(BigInteger val)返回較大的數值

例 1
編寫一個 Java 程序,將用戶輸入的數字作為 BigInteger 對象,然后調用該對象的各種方法實現加、減、乘、除和其他運算,并輸出結果。具體實現代碼如下:

import java.math.BigInteger; import java.util.Scanner; public class Test09 {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("請輸入一個整型數字:");// 保存用戶輸入的數字int num = input.nextInt();// 使用輸入的數字創建BigInteger對象BigInteger bi = new BigInteger(num + "");// 計算大數字加上99的結果System.out.println("加法操作結果:" + bi.add(new BigInteger("99")));// 計算大數字減去25的結果System.out.println("減法操作結果:" + bi.subtract(new BigInteger("25")));// 計算大數字乘以3的結果System.out.println("乘法橾作結果:" + bi.multiply(new BigInteger("3")));// 計算大數字除以2的結果System.out.println("除法操作結果:" + bi.divide(new BigInteger("2")));// 計算大數字除以3的商System.out.println("取商操作結果:" + bi.divideAndRemainder(new BigInteger("3"))[0]);// 計算大數字除以3的余數System.out.println("取余操作結果:" + bi.divideAndRemainder(new BigInteger("3"))[1]);// 計算大數字的2次方System.out.println("取 2 次方操作結果:" + bi.pow(2));// 計算大數字的相反數System.out.println("取相反數操作結果:" + bi.negate());} }

上述代碼將用戶輸入的整型數字保存到 num 變量中,由于 BigInteger 類的構造方法只接收字符串類型的參數,所以使用“new BigInteger(num+"")”代碼來創建 BigInteger 對象。接下來的代碼演示了如何調用 BigInteger 類提供的運算方法,運行效果下所示。

請輸入一個整型數字: 125 加法操作結果:224 減法操作結果:100 乘法橾作結果:375 除法操作結果:62 取商操作結果:41 取余操作結果:22 次方操作結果:15625 取相反數操作結果:-125

BigDecimal 類

BigInteger 和 BigDecimal 都能實現大數字的運算,不同的是 BigDecimal 加入了小數的概念。一般的 float 和 double 類型數據只能用來做科學計算或工程計算,但由于在商業計算中要求數字精度比較高,所以要用到 BigDecimal 類。BigDecimal 類支持任何精度的浮點數,可以用來精確計算貨幣值。

BigDecimal 常用的構造方法如下。

  • BigDecimal(double val):實例化時將雙精度型轉換為 BigDecimal 類型。
  • BigDecimal(String val):實例化時將字符串形式轉換為 BigDecimal 類型。

BigDecimal 類的方法可以用來做超大浮點數的運算,像加、減、乘和除等。在所有運算中,除法運算是最復雜的,因為在除不盡的情況下,末位小數的處理方式是需要考慮的。

下面列出了 BigDecimal 類用于實現加、減、乘和除運算的方法。

BigDecimal add(BigDecimal augend) // 加法操作 BigDecimal subtract(BigDecimal subtrahend) // 減法操作 BigDecimal multiply(BigDecimal multiplieand) // 乘法操作 BigDecimal divide(BigDecimal divisor,int scale,int roundingMode ) // 除法操作

其中,divide() 方法的 3 個參數分別表示除數、商的小數點后的位數和近似值處理模式。

表 2 列出了 roundingMode 參數支持的處理模式。

模式名稱說明
BigDecimal.ROUND_UP商的最后一位如果大于 0,則向前進位,正負數都如此
BigDecimal.ROUND_DOWN商的最后一位無論是什么數字都省略
BigDecimal.ROUND_CEILING商如果是正數,按照 ROUND_UP 模式處理;如果是負數,按照 ROUND_DOWN模式處理
BigDecimal.ROUND_FLOOR與 ROUND_CELING 模式相反,商如果是正數,按照 ROUND_DOWN 模式處理;如果是負數,按照 ROUND_UP 模式處理
BigDecimal.ROUND_HALF_ DOWN對商進行五舍六入操作。如果商最后一位小于等于 5,則做舍棄操作,否則對最后一位進行進位操作
BigDecimal.ROUND_HALF_UP對商進行四舍五入操作。如果商最后一位小于 5,則做舍棄操作,否則對最后一位進行進位操作
BigDecimal.ROUND_HALF_EVEN如果商的倒數第二位是奇數,則按照 ROUND_HALF_UP 處理;如果是偶數,則按照 ROUND_HALF_DOWN 處理

例 2
編寫一個 Java 程序,演示如何使用 BigDecimal 類提供的方法對數字執行運算,并輸出結果。具體實現代碼如下:

import java.math.BigDecimal; import java.util.Scanner; public class Test10 {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("請輸入一個數字:");// 保存用戶輸入的數字double num = input.nextDouble();// 使用輸入的數字創建BigDecimal對象BigDecimal bd = new BigDecimal(num);// 計算大數字加上99.154的結果System.out.println("加法操作結果:" + bd.add(new BigDecimal(99.154)));// 計算大數字減去-25.157904的結果System.out.println("減法操作結果:" + bd.subtract(new BigDecimal(-25.157904)));// 計算大數字乘以3.5的結果System.out.println("乘法操作結果:" + bd.multiply(new BigDecimal(3.5)));// 計算大數字除以3.14的結果,并保留小數后2位System.out.println("除法操作結果(保留 2 位小數):" + bd.divide(new BigDecimal(3.14), 2, BigDecimal.ROUND_CEILING));// 計算大數字除以3.14的結果,并保留小數后5位System.out.println("除法操作結果(保留 5 位小數):" + bd.divide(new BigDecimal(3.14), 5, BigDecimal.ROUND_CEILING));} }

上述代碼將用戶輸入的數字保存到 num 變量中,然后調用“newBigDecimal(num)”方法來創建 BigDecimal 對象。接下來的代碼演示了如何調用 BigDecimal 類提供的運算方法,運行效果如下所示。

請輸入一個數字: 100 加法操作結果:199.15399999999999636202119290828704833984375 減法操作結果:125.157903999999998490011421381495893001556396484375 乘法操作結果:350.0 除法操作結果(保留 2 位小數)31.85 除法操作結果(保留 5 位小數)31.84714

總結

以上是生活随笔為你收集整理的4、大数字运算(BigInteger类和BigDecimal类)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。