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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

Java大数字运算

發(fā)布時(shí)間:2025/3/12 java 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java大数字运算 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在 Java 中提供了用于大數(shù)字運(yùn)算的類(lèi),即 java.math.BigInteger 類(lèi)和 java.math.BigDecimal 類(lèi)。這兩個(gè)類(lèi)用于高精度計(jì)算,其中 BigInteger 類(lèi)是針對(duì)整型大數(shù)字的處理類(lèi),而 BigDecimal 類(lèi)是針對(duì)大小數(shù)的處理類(lèi)。

BigInteger 類(lèi)

如果要存儲(chǔ)比 Integer 更大的數(shù)字,Integer 數(shù)據(jù)類(lèi)型就無(wú)能為力了。因此,Java 中提供 BigInteger 類(lèi)來(lái)處理更大的數(shù)字。

BigInteger 類(lèi)型的數(shù)字范圍較 Integer 類(lèi)型的數(shù)字范圍要大得多。BigInteger 支持任意精度的整數(shù),也就是說(shuō)在運(yùn)算中 BigInteger 類(lèi)型可以準(zhǔn)確地表示任何大小的整數(shù)值。

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

要使用 BigInteger 類(lèi),首先要?jiǎng)?chuàng)建一個(gè) BigInteger 對(duì)象。BigInteger 類(lèi)提供了很多種構(gòu)造方法,其中最直接的一種是參數(shù)以字符串形式代表要處理的數(shù)字。這個(gè)方法語(yǔ)法格式如下:

BigInteger(String val)

這里的 val 是數(shù)字十進(jìn)制的字符串。例如,要將數(shù)字 5 轉(zhuǎn)換為 BigInteger 對(duì)象,語(yǔ)句如下:

BigInteger bi = new BigInteger("5")

注意:這里數(shù)字 5 的雙引號(hào)是必需的,因?yàn)?BigInteger 類(lèi)構(gòu)造方法要求參數(shù)是字符串類(lèi)型。

創(chuàng)建 BigInteger 對(duì)象之后,便可以調(diào)用 BigInteger 類(lèi)提供的方法進(jìn)行各種數(shù)學(xué)運(yùn)算操作,BigInteger 類(lèi)的常用運(yùn)算方法


將用戶(hù)輸入的數(shù)字作為 BigInteger 對(duì)象,然后調(diào)用該對(duì)象的各種方法實(shí)現(xiàn)加、減、乘、除和其他運(yùn)算,并輸出結(jié)果。代碼如下:

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

將用戶(hù)輸入的整型數(shù)字保存到 num 變量中,由于 BigInteger 類(lèi)的構(gòu)造方法只接收字符串類(lèi)型的參數(shù),所以使用“new BigInteger(num+"")”代碼來(lái)創(chuàng)建 BigInteger 對(duì)象。調(diào)用 BigInteger 類(lèi)提供的運(yùn)算方法,運(yùn)行效果下所示。

請(qǐng)輸入一個(gè)整型數(shù)字: 125 加法操作結(jié)果:224 減法操作結(jié)果:100 乘法橾作結(jié)果:375 除法操作結(jié)果:62 取商操作結(jié)果:41 取余操作結(jié)果:22 次方操作結(jié)果:15625 取相反數(shù)操作結(jié)果:-125

BigDecimal 類(lèi)

BigInteger 和 BigDecimal 都能實(shí)現(xiàn)大數(shù)字的運(yùn)算,不同的是 BigDecimal 加入了小數(shù)的概念。一般的 float 和 double 類(lèi)型數(shù)據(jù)只能用來(lái)做科學(xué)計(jì)算或工程計(jì)算,但由于在商業(yè)計(jì)算中要求數(shù)字精度比較高,所以要用到 BigDecimal 類(lèi)。BigDecimal 類(lèi)支持任何精度的浮點(diǎn)數(shù),可以用來(lái)精確計(jì)算貨幣值。

BigDecimal 常用的構(gòu)造方法如下。

BigDecimal(double val):實(shí)例化時(shí)將雙精度型轉(zhuǎn)換為 BigDecimal 類(lèi)型。BigDecimal(String val):實(shí)例化時(shí)將字符串形式轉(zhuǎn)換為 BigDecimal 類(lèi)型。

BigDecimal 類(lèi)的方法可以用來(lái)做超大浮點(diǎn)數(shù)的運(yùn)算,像加、減、乘和除等。在所有運(yùn)算中,除法運(yùn)算是最復(fù)雜的,因?yàn)樵诔槐M的情況下,末位小數(shù)的處理方式是需要考慮的。

下面列出了 BigDecimal 類(lèi)用于實(shí)現(xiàn)加、減、乘和除運(yùn)算的方法。

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

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

roundingMode 參數(shù)支持的處理模式

使用 BigDecimal 類(lèi)提供的方法對(duì)數(shù)字執(zhí)行運(yùn)算,并輸出結(jié)果。代碼如下:

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

上述代碼將用戶(hù)輸入的數(shù)字保存到 num 變量中,然后調(diào)用“newBigDecimal(num)”方法來(lái)創(chuàng)建 BigDecimal 對(duì)象。調(diào)用 BigDecimal 類(lèi)提供的運(yùn)算方法,運(yùn)行效果如下所示。

請(qǐng)輸入一個(gè)數(shù)字: 100 加法操作結(jié)果:199.15399999999999636202119290828704833984375 減法操作結(jié)果:125.157903999999998490011421381495893001556396484375 乘法操作結(jié)果:350.0 除法操作結(jié)果(保留 2 位小數(shù))31.85 除法操作結(jié)果(保留 5 位小數(shù))31.84714 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的Java大数字运算的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。