更新時(shí)間:2020-09-22 16:49:08 來源:動力節(jié)點(diǎn) 瀏覽2739次
在java語言中,包括了很多種java數(shù)據(jù)類型,相信大家對這些基礎(chǔ)知識并不陌生,但是有時(shí)候這些數(shù)據(jù)類型的精度不能滿足要求時(shí),就需要用更大或者精度更高的類型,這時(shí)候就需要使用到大數(shù)值。那么大數(shù)值是什么?Java大數(shù)值轉(zhuǎn)換又是怎樣進(jìn)行的?這篇文章給你答案,一起來學(xué)習(xí)下面的內(nèi)容吧!
Java基本數(shù)據(jù)類型包括四大類八種,那么什么是java大數(shù)值呢?大數(shù)值就是用來表示“大”的數(shù)值,在理論上,大在任意長度和任意精度上,想要多大,就能有多大。這是對于java零基礎(chǔ)的新手朋友們學(xué)習(xí)java大數(shù)值轉(zhuǎn)換必須先要知道了解的基本概念。
如果基本的整數(shù)和浮點(diǎn)數(shù)精度不能滿足需求,就可以使用java.math包中的兩個(gè)很有用的類:Biglnteger和BigDecimal。這兩個(gè)類可以處理任意長度的數(shù)值。BigInteger類實(shí)現(xiàn)了任意精度的整數(shù)運(yùn)算,Big Decimal實(shí)現(xiàn)了任意精度的浮點(diǎn)數(shù)運(yùn)算。
java大數(shù)值轉(zhuǎn)換的方法是什么呢?使用靜態(tài)的valueOf方法可以把普通的數(shù)值轉(zhuǎn)換為大數(shù)值:
Biglnteger a= Biglnteger.value0f(100);
可惜的是,不能使用人們熟悉的算術(shù)運(yùn)算符(如+和*)處理大數(shù)值,而需要使用大數(shù)值類中的add和multiply方法。
Biglnteger c = a.add(b); //c =a+ b
Biglnteger d = c.multiply(b.add(Biglnteger.value0f(2))); //d = c*(b + 2)
與C++不同,java沒有提供運(yùn)算符重載功能,程序員無法重定義+和*運(yùn)算符,使其應(yīng)用于Biglnteger類的add和multiply運(yùn)算。Java語言的設(shè)計(jì)者確實(shí)為字符串的連接重載了+的運(yùn)算符,但沒有重載其他的運(yùn)算符,也沒有給java程序員自己重載運(yùn)算符的權(quán)利。
這是一個(gè)中獎(jiǎng)概率程序:

下面對中獎(jiǎng)概率程序加以改進(jìn)——大數(shù)值轉(zhuǎn)換,使其可以采用大數(shù)值進(jìn)行計(jì)算:

假設(shè)你被邀請參加抽獎(jiǎng)活動,并從490個(gè)可能的數(shù)值中抽取60個(gè),那么這個(gè)程序會得出中獎(jiǎng)概率是716 395 843 461 995 557 415 116 222 540 092 933 411 717 612 789 263 493 493 351 013 459 481 104 668 848次中1次。
在第一個(gè)未修改的中獎(jiǎng)程序中,用于計(jì)算的語句是:
lotteryOdds = lotteryOdds*(n - i + 1)/i;
如果大數(shù)值轉(zhuǎn)換后,使用大數(shù)值,相應(yīng)的語句為:
lotteryOdds=lotteryOdds.multiply(Biglnteger.valueOf(n-i+1) ).divide(Biglnteger.valueOf(i));
以上就是今天我們學(xué)習(xí)的java大數(shù)值轉(zhuǎn)換的內(nèi)容,并通過修改一個(gè)程序的例子,看到了如何采用大數(shù)值計(jì)算中獎(jiǎng)概率,希望大家都能學(xué)會java大數(shù)值轉(zhuǎn)換的方法,并在平時(shí)多加練習(xí),掌握大數(shù)值的內(nèi)容,以提高自己的java技能。
相關(guān)閱讀

初級 202925

初級 203221

初級 202629

初級 203743