更新時間:2020-09-22 16:49:08 來源:動力節(jié)點 瀏覽2413次
在java語言中,包括了很多種java數(shù)據(jù)類型,相信大家對這些基礎(chǔ)知識并不陌生,但是有時候這些數(shù)據(jù)類型的精度不能滿足要求時,就需要用更大或者精度更高的類型,這時候就需要使用到大數(shù)值。那么大數(shù)值是什么?Java大數(shù)值轉(zhuǎn)換又是怎樣進行的?這篇文章給你答案,一起來學(xué)習(xí)下面的內(nèi)容吧!
Java基本數(shù)據(jù)類型包括四大類八種,那么什么是java大數(shù)值呢?大數(shù)值就是用來表示“大”的數(shù)值,在理論上,大在任意長度和任意精度上,想要多大,就能有多大。這是對于java零基礎(chǔ)的新手朋友們學(xué)習(xí)java大數(shù)值轉(zhuǎn)換必須先要知道了解的基本概念。
如果基本的整數(shù)和浮點數(shù)精度不能滿足需求,就可以使用java.math包中的兩個很有用的類:Biglnteger和BigDecimal。這兩個類可以處理任意長度的數(shù)值。BigInteger類實現(xiàn)了任意精度的整數(shù)運算,Big Decimal實現(xiàn)了任意精度的浮點數(shù)運算。
java大數(shù)值轉(zhuǎn)換的方法是什么呢?使用靜態(tài)的valueOf方法可以把普通的數(shù)值轉(zhuǎn)換為大數(shù)值:
Biglnteger a= Biglnteger.value0f(100);
可惜的是,不能使用人們熟悉的算術(shù)運算符(如+和*)處理大數(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īng)用于Biglnteger類的add和multiply運算。Java語言的設(shè)計者確實為字符串的連接重載了+的運算符,但沒有重載其他的運算符,也沒有給java程序員自己重載運算符的權(quán)利。
這是一個中獎概率程序:
下面對中獎概率程序加以改進——大數(shù)值轉(zhuǎn)換,使其可以采用大數(shù)值進行計算:
假設(shè)你被邀請參加抽獎活動,并從490個可能的數(shù)值中抽取60個,那么這個程序會得出中獎概率是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次。
在第一個未修改的中獎程序中,用于計算的語句是:
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)容,并通過修改一個程序的例子,看到了如何采用大數(shù)值計算中獎概率,希望大家都能學(xué)會java大數(shù)值轉(zhuǎn)換的方法,并在平時多加練習(xí),掌握大數(shù)值的內(nèi)容,以提高自己的java技能。
相關(guān)閱讀