本文目錄一覽:
JAVA 大數值問題
public static void main(String[] args) {
//int的最大數值是2的31次方減1,如果在最大值上繼續增加則會從最小值開始,循環下去。
//BigInteger沒有最大值,但計算並不是很方便需要使用裡面定義的各種方法才可以。
Integer i = new Integer(2147483647);
BigInteger bi = new BigInteger(“2147483647”);
System.out.println(i+1);
System.out.println(bi.add(BigInteger.ONE));
}
java中如何對較大的數字進行計算
在Java中針對比較大的數字,有大數類型來進行表示。即BigInteger和BigDecimal兩個類。
以BigDecimal為例:
BigDecimal bigDecimalA = new BigDecimal(“1234567890123456789012345678901”);
BigDecimal bigDecimalB = new BigDecimal(“1234567890123456789012345678902”);
// 加 +
bigDecimalA = bigDecimalA.add(bigDecimalB);
// 減 –
bigDecimalA = bigDecimalA.subtract(bigDecimalB);
// 乘 *
bigDecimalA = bigDecimalA.multiply(bigDecimalB);
// 除 /
bigDecimalA = bigDecimalA.divide(bigDecimalB);
// ……其他的類似,API里很詳細,不再贅述了。
java程序 大數值的問題講解
import java.math.*;
import java.util.*;
這兩行是調用API文檔中現有的類,其實全稱可以按如下的方式寫:
import java.math.BigInteger;
import java.util.Scanner;
因為你調用的 BigInteger和Scanner方法是從上面的math和util包中調用的,所以必須指明,否則就會出錯。
Scanner in = new Scanner(System.in);
這個是一個要你輸入的語句。
在API文檔中說明如下:
Scanner 使用分隔符模式將其輸入分解為標記,默認情況下該分隔符模式與空白匹配。然後可以使用不同的 next 方法將得到的標記轉換為不同類型的值。
例如,以下代碼使用戶能夠從 System.in 中讀取一個數:
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
再看一個例子,以下代碼使 long 類型可以通過 myNumbers 文件中的項分配:
Scanner sc = new Scanner(new File(“myNumbers”));
while (sc.hasNextLong()) {
long aLong = sc.nextLong();
}
對於
BigInteger lotteryOdds = BigInteger.valueOf(1);
中的valueOf()方法,這個也是API文檔中的,方法如下:
valueOf
public static BigInteger valueOf(long val)返回其值等於指定 long 的值的 BigInteger。提供的此「靜態工廠方法」優先於 (long) 構造方法,因為前者允許重用經常使用的 BigInteger。
參數:
val – 要返回的 BigInteger 的值。
返回:
具有指定值的 BigInteger。
—————————————–
以上就是這個程序的關鍵點,其實沒有什麼知識點,就是查詢java的API文檔。
你應該是初學者吧,因為感覺還不會用文檔。那你就到網上搜索API文檔,有中文和英文的,你下載後就慢慢學習使用,大約40多M。
API文檔是你學習java和以後java開發的必需具備的文檔。給你舉個例子,就你上面的程序,對於BigInteger類和valueOf()這個方法,我開始根本就不知道,但你在了解文檔後你就會使用了。在你編程的時候,你需要數學方法,那就一定得去
java.math的包中查找,然後看每個類,這樣你就知道用哪個方法了。
記住:沒有誰能把API文檔中的方法都記住,而且也沒有意義去記住。API文檔就相當於字典。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/246075.html