Câu trả lời:
Bạn có thể sử dụng BigInteger
lớp cho số nguyên và BigDecimal
cho các số có chữ số thập phân. Cả hai lớp đều được định nghĩa trong java.math
gói.
Thí dụ:
BigInteger reallyBig = new BigInteger("1234567890123456890");
BigInteger notSoBig = new BigInteger("2743561234");
reallyBig = reallyBig.add(notSoBig);
Sử dụng BigInteger
lớp là một phần của thư viện Java.
http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigInteger.html
Đây là một ví dụ nhận được những con số lớn rất nhanh chóng.
import java.math.BigInteger;
/*
250000th fib # is: 36356117010939561826426 .... 10243516470957309231046875
Time to compute: 3.5 seconds.
1000000th fib # is: 1953282128707757731632 .... 93411568996526838242546875
Time to compute: 58.1 seconds.
*/
public class Main {
public static void main(String... args) {
int place = args.length > 0 ? Integer.parseInt(args[0]) : 250 * 1000;
long start = System.nanoTime();
BigInteger fibNumber = fib(place);
long time = System.nanoTime() - start;
System.out.println(place + "th fib # is: " + fibNumber);
System.out.printf("Time to compute: %5.1f seconds.%n", time / 1.0e9);
}
private static BigInteger fib(int place) {
BigInteger a = new BigInteger("0");
BigInteger b = new BigInteger("1");
while (place-- > 1) {
BigInteger t = b;
b = a.add(b);
a = t;
}
return b;
}
}
Thanh toán BigDecimal
và BigInteger
.
import java.math.BigInteger;
import java.util.*;
class A
{
public static void main(String args[])
{
Scanner in=new Scanner(System.in);
System.out.print("Enter The First Number= ");
String a=in.next();
System.out.print("Enter The Second Number= ");
String b=in.next();
BigInteger obj=new BigInteger(a);
BigInteger obj1=new BigInteger(b);
System.out.println("Sum="+obj.add(obj1));
}
}
Tùy thuộc vào những gì bạn đang làm, bạn có thể muốn xem GMP (gmplib.org) là một thư viện đa độ chính xác hiệu suất cao. Để sử dụng nó trong Java, bạn cần các trình bao bọc JNI xung quanh thư viện nhị phân.
Hãy xem một số mã Alioth Shootout để biết ví dụ về việc sử dụng nó thay vì BigInteger để tính Pi cho một số chữ số tùy ý.
https://benchmarksgame-team.pages.debian.net/benchmarksgame/program/pidigits-java-2.html
9223372036854775807
là giá trị chính xác củaLong.MAX_VALUE
, dù sao.