Как я могу выполнять вычисления с очень большими числами на Java?
Я пробовал, long
но он достигает максимума 9223372036854775807, а при использовании целого числа он не сохраняет достаточно цифр и, следовательно, недостаточно точен для того, что мне нужно.
Есть ли что-нибудь вокруг этого?
java
numbers
integer
biginteger
Пити Б.
источник
источник
9223372036854775807
вLong.MAX_VALUE
любом случае является точным значением .Ответы:
Вы можете использовать
BigInteger
класс для целых чисел иBigDecimal
для чисел с десятичными цифрами. Оба класса определены вjava.math
package.Пример:
BigInteger reallyBig = new BigInteger("1234567890123456890"); BigInteger notSoBig = new BigInteger("2743561234"); reallyBig = reallyBig.add(notSoBig);
источник
Используйте
BigInteger
класс, который является частью библиотеки Java.http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigInteger.html
источник
Вот пример, который очень быстро получает большие числа.
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; } }
источник
Касса
BigDecimal
и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)); } }
источник
В зависимости от того, что вы делаете, вам может быть интересно взглянуть на GMP (gmplib.org), который представляет собой высокопроизводительную библиотеку с высокой точностью. Чтобы использовать его в Java, вам нужны оболочки JNI для двоичной библиотеки.
См. Часть кода Alioth Shootout для примера использования его вместо BigInteger для вычисления числа Пи с произвольным числом цифр.
https://benchmarksgame-team.pages.debian.net/benchmarksgame/program/pidigits-java-2.html
источник