คลาส BigInteger คืออะไร
มีชนิดข้อมูลดั้งเดิม บางประเภท ใน Java ที่ใช้ เช่น int หรือ long เพื่อดำเนินการกับจำนวนเต็ม อย่างไรก็ตาม บางครั้งเราจำเป็นต้องจัดเก็บจำนวนมากนอกขอบเขตของประเภทข้อมูลดั้งเดิมดังกล่าว BigInteger Class ใช้สำหรับการคำนวณทางคณิตศาสตร์สำหรับตัวเลขจำนวนมาก มีเมธอดทั้งหมดจาก แพ็คเกจ java.lang.Mathและแอนะล็อกไปยังตัวดำเนินการจำนวนเต็มดั้งเดิมทั้งหมดของ Java จำนวนเต็มคลาสครอบคลุมการดำเนินการสำหรับเลขคณิตโมดูลาร์ การจัดการบิต การคำนวณ GCD และการดำเนินการอื่นๆ อีกเล็กน้อย BigIntegers จะแสดงในรูปแบบสองส่วนเติมเต็ม ไม่มีข้อจำกัดทางทฤษฎีเกี่ยวกับจำนวนที่สามารถจัดเก็บได้ เนื่องจากหน่วยความจำได้รับการจัดสรรแบบไดนามิก อย่างไรก็ตาม ในทางปฏิบัติหน่วยความจำมีจำกัด และเราสามารถเก็บจำนวนเต็มซึ่งมีจำนวนบิตน้อยกว่าหรือเท่ากับจำนวนเต็มได้MAX_VALUE ซึ่งให้ขอบเขตบนที่มากพอที่จะจัดเก็บตัวเลขจำนวนมากเกือบทั้งหมดคลาส BigInteger ใช้งานอย่างไร
import java.math.BigInteger;
หากต้องการใช้ คลาส BigIntegerในโค้ดของคุณ คุณต้องนำเข้าแพ็คเกจ java.math.BigInteger
การประกาศคลาส BigInteger
คลาสBigIntegerใน Java ถูกประกาศด้วยวิธีต่อไปนี้ใน แพ็คเกจ java.math :
public class BigInteger
extends Number
implements Comparable<BigInteger>
คลาส BigInteger ขยาย คลาส Numberและใช้ อินเท อร์เฟซที่เปรียบเทียบได้ มีการประกาศและกำหนดไว้ในแพ็คเกจ java.math
ตัวสร้างคลาส
BigInteger Class ของ Java มีตัวสร้างที่โอเวอร์โหลดจำนวนมาก คุณอาจลองเรียกใช้แต่ละรายการในโปรแกรมแก้ไขเพื่อดูว่าทำงานอย่างไรซีเนียร์# | ตัวสร้าง | คำอธิบาย |
---|---|---|
1 | BigInteger(byte[] วาล) | แปลอาร์เรย์ไบต์เป็นBigInteger |
2 | BigInteger(int signum, byte[] ขนาด) | แปลการ แสดงขนาดของเครื่องหมายเป็นBigInteger |
3 | BigInteger(int bitLength, int แน่นอน, Random rnd) | สร้าง BigIntegerบวกที่สร้างขึ้นแบบสุ่มตามความยาวที่ระบุ |
4 | BigInteger(ค่าสตริง) | แปลการ แสดงสตริงทศนิยมเป็นBigInteger |
5 | BigInteger(สตริง val, int radix) | แปลง การ แสดงสตริงในฐานที่ระบุเป็นBigInteger |
วิธีการเรียน
คลาสBigIntegerของ Java มีหลายวิธี ซึ่งบางวิธีได้อธิบายไว้ด้านล่าง ในตาราง 'ค่านี้' แทนค่าBigIntegerที่เรียกใช้เมธอด และ ' val ' เป็นอาร์กิวเมนต์ที่ส่งไปยังเมธอดเอบีเอส () | คืนค่าสัมบูรณ์ของ ' this ' BigInteger |
เพิ่ม() | มันจะคืนค่าBigintegerโดยการคำนวณ ' this + val ' |
ลบ () | มันจะคืนค่าBigintegerโดยการคำนวณ ' this - val ' |
แบ่ง() | ส่งคืนค่าBigintegerโดยการคำนวณ ' this / val ' |
คูณ() | ส่งคืนค่าBigintegerโดยการคำนวณ ' this * val ' |
มูลค่าของ() | มันส่งคืน ค่า BigIntegerของlong ที่ กำหนด |
เท่ากับ () | มันเปรียบเทียบความเท่าเทียมกันระหว่าง ' สิ่งนี้ ' BigIntegerและวัตถุที่กำหนด |
ธาร () | มันจะคืนค่าจำนวนเต็มโดยการคำนวณ ' thisexponent ' |
นาที() | ส่งคืนค่าต่ำสุดระหว่าง ' this ' BigIntegerและค่าที่กำหนด |
สูงสุด () | ส่งคืนค่าสูงสุดระหว่าง ' this ' BigIntegerและค่าที่กำหนด |
สมัย () | ส่งคืนค่าสำหรับ ' this mod m ' |
gcd() | โดยจะส่งคืนBigIntegerที่เป็นตัวหารร่วมมากระหว่างค่าสัมบูรณ์ของ ' this ' และ ' pass value ' |
bitCount() | ส่งกลับจำนวนบิตในการแทนสองส่วนเติมเต็มของ' this ' BigInteger |
ความยาวบิต () | ส่งคืนจำนวนบิต ไม่รวมบิตเครื่องหมาย ในการแทนค่าสองส่วนขั้นต่ำของ' this ' BigInteger |
และ() | ส่งคืนค่าBigintegerโดยการคำนวณ ' this & val ' |
หรือ() | ส่งคืนค่าBigintegerโดยการคำนวณ ' this | วาล '. |
ไม่() | ส่งคืนค่าBiginteger โดยคำนวณ ' ~this' |
และไม่() | ส่งคืนค่าBigintegerโดยการคำนวณ ' this & ~val ' |
intValue() | มันแปลงBigIntegerเป็นint |
floatValue() | มันแปลงBigIntegerเป็นfloat |
ค่ายาว () | มันแปลงBigIntegerเป็นlong |
ค่าสองเท่า () | มันแปลงBigIntegerเป็นสองเท่า |
toString() | ส่งกลับการแสดงสตริงทศนิยมของBigInteger |
ตัวอย่างที่ 1
import java.math.BigInteger;
public class Example1 {
static BigInteger calculateFactorial(int val) {
// Initialize result
BigInteger f = BigInteger.ONE; // Or new BigInteger("1")
// compute factorial
for (int i = 2; i <= val; i++) {
f = f.multiply(BigInteger.valueOf(i));
}
return f;
}
// Driver method
public static void main(String[] args) {
int val = 25;
System.out.println(calculateFactorial(val));
}
}
เอาต์พุต
15511210043330985984000000
คำอธิบาย
ในข้อมูลโค้ดด้านบน มีการคำนวณตัวประกอบของจำนวนมากโดยใช้BigInteger Class โดยอิมพอร์ตแพ็คเกจjava.math.BigInteger เราได้สร้างวิธีการคำนวณปัจจัย วิธีนี้จะสร้างBigIntegerแล้วคำนวณแฟกทอเรียลโดยใช้วิธีการคูณf.multiply (BigInteger.valueOf(i))ตัวอย่างที่ 2
import java.math.BigInteger;
public class Example2 {
public static void main(String[] args) {
BigInteger big1 = new BigInteger("20");
BigInteger big2 = new BigInteger("60");
BigInteger sub = big2.subtract(big1);
System.out.println(big2 + " - " + big1 + " = " + sub);
BigInteger add = big1.add(big2);
System.out.println(big1 + " + " + big2 + " = " + add);
BigInteger mul = big1.multiply(big2);
System.out.println(big1 + " * " + big2 + " = " + mul);
BigInteger div = big2.divide(big1);
System.out.println(big2 + " / " + big1 + " = " + div);
BigInteger min = big1.min(big2);
System.out.println("min value: " + min);
BigInteger max = big1.max(big2);
System.out.println("max value: " + max);
}
}
เอาต์พุต
60 - 20 = 40 60 + 20 = 80 60 * 20 = 1200 60/20 = ค่าต่ำสุด 3: ค่าสูงสุด 20: 60
คำอธิบาย
ในตัวอย่างด้านบน เราได้สร้างBigInteger สองตัว โดยใช้ตัวสร้างBigInteger (String val) เราใช้วิธีการต่างๆ กับBig1และbig2ของBigIntegerที่มีค่า 20 และ 60 ตามลำดับ เราใช้วิธีการต่อไปนี้:- big2.subtract(big1)เพื่อลบ 20 จาก 60
- big1.add(big2)เพื่อเพิ่ม 20 และ 60
- big1.multiply(big2)เพื่อคูณ 20 และ 60
- big2.divide(big1)เพื่อหาร 60 ด้วย 20
- big1.min(big2)เพื่อรับค่าที่น้อยกว่าจากทั้งสองค่า
- big1.max(big2)เพื่อรับค่าที่มากกว่าของทั้งสองค่า
GO TO FULL VERSION